<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>My Project: drogon_test.h 文件参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr id="projectrow">
  <td id="projectalign">
   <div id="projectname">My Project
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- 制作者 Doxygen 1.9.8 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
  initMenu('',true,false,'search.php','搜索');
  $(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">载入中...</div>
<div class="SRStatus" id="Searching">搜索中...</div>
<div class="SRStatus" id="NoMatches">未找到</div>
</div>
</div>
</div>
</div>

</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#nested-classes">类</a> &#124;
<a href="#namespaces">命名空间</a> &#124;
<a href="#define-members">宏定义</a> &#124;
<a href="#func-members">函数</a> &#124;
<a href="#var-members">变量</a>  </div>
  <div class="headertitle"><div class="title">drogon_test.h 文件参考</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;trantor/utils/NonCopyable.h&gt;</code><br />
<code>#include &lt;<a class="el" href="DrObject_8h_source.html">drogon/DrObject.h</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="exports_8h_source.html">drogon/exports.h</a>&gt;</code><br />
<code>#include &lt;memory&gt;</code><br />
<code>#include &lt;mutex&gt;</code><br />
<code>#include &lt;sstream&gt;</code><br />
<code>#include &lt;atomic&gt;</code><br />
<code>#include &lt;string_view&gt;</code><br />
<code>#include &lt;cstddef&gt;</code><br />
</div><div class="textblock"><div class="dynheader">
drogon_test.h 的引用(Include)关系图:</div>
<div class="dyncontent">
<div class="center"><img src="drogon__test_8h__incl.png" border="0" usemap="#adrogon__test_8h" alt=""/></div>
<map name="adrogon__test_8h" id="adrogon__test_8h">
<area shape="rect" title=" " alt="" coords="1003,5,1114,31"/>
<area shape="rect" title=" " alt="" coords="347,79,549,104"/>
<area shape="poly" title=" " alt="" coords="1003,28,560,80,560,74,1003,23"/>
<area shape="rect" href="DrObject_8h.html" title=" " alt="" coords="881,79,1021,104"/>
<area shape="poly" title=" " alt="" coords="1043,33,981,73,978,69,1040,28"/>
<area shape="rect" href="exports_8h.html" title=" " alt="" coords="1210,225,1342,251"/>
<area shape="poly" title=" " alt="" coords="1062,30,1069,65,1076,84,1086,102,1120,140,1161,172,1202,198,1238,217,1236,222,1199,203,1158,177,1117,144,1082,106,1071,87,1064,66,1057,31"/>
<area shape="rect" title=" " alt="" coords="5,225,83,251"/>
<area shape="poly" title=" " alt="" coords="1005,33,96,228,95,222,1004,28"/>
<area shape="rect" title=" " alt="" coords="107,225,171,251"/>
<area shape="poly" title=" " alt="" coords="1022,33,870,81,767,116,665,154,636,168,606,180,544,194,491,203,398,210,304,213,185,228,184,223,304,208,398,204,490,198,543,189,605,175,634,163,663,150,765,111,869,76,1020,28"/>
<area shape="rect" title=" " alt="" coords="1096,79,1171,104"/>
<area shape="poly" title=" " alt="" coords="1072,29,1113,67,1109,71,1069,33"/>
<area shape="rect" title=" " alt="" coords="1195,79,1261,104"/>
<area shape="poly" title=" " alt="" coords="1087,28,1189,71,1187,76,1085,33"/>
<area shape="rect" title=" " alt="" coords="1286,79,1383,104"/>
<area shape="poly" title=" " alt="" coords="1104,28,1277,73,1276,78,1102,33"/>
<area shape="rect" title=" " alt="" coords="1407,79,1478,104"/>
<area shape="poly" title=" " alt="" coords="1115,25,1239,46,1394,76,1393,81,1238,51,1114,31"/>
<area shape="poly" title=" " alt="" coords="962,103,994,139,1017,158,1041,175,1070,187,1111,199,1204,220,1203,225,1110,204,1068,192,1039,180,1013,163,991,143,958,106"/>
<area shape="rect" href="DrClassMap_8h.html" title=" " alt="" coords="675,152,837,177"/>
<area shape="poly" title=" " alt="" coords="920,107,801,150,800,145,918,102"/>
<area shape="rect" title=" " alt="" coords="1094,225,1186,251"/>
<area shape="poly" title=" " alt="" coords="956,103,967,139,977,158,991,175,1011,191,1034,204,1082,222,1080,227,1032,209,1008,196,987,179,973,161,962,141,950,105"/>
<area shape="rect" title=" " alt="" coords="861,152,920,177"/>
<area shape="poly" title=" " alt="" coords="943,106,911,143,907,140,939,103"/>
<area shape="poly" title=" " alt="" coords="837,174,1197,222,1196,228,836,179"/>
<area shape="rect" title=" " alt="" coords="195,225,352,251"/>
<area shape="poly" title=" " alt="" coords="679,180,365,226,364,221,678,175"/>
<area shape="rect" title=" " alt="" coords="377,225,463,251"/>
<area shape="poly" title=" " alt="" coords="703,180,477,227,476,222,701,175"/>
<area shape="poly" title=" " alt="" coords="675,175,363,202,97,228,97,223,362,197,675,170"/>
<area shape="poly" title=" " alt="" coords="676,178,656,180,525,192,421,199,317,208,184,228,184,223,317,203,421,193,525,186,656,175,675,173"/>
<area shape="rect" title=" " alt="" coords="488,225,552,251"/>
<area shape="poly" title=" " alt="" coords="719,180,566,226,564,221,717,175"/>
<area shape="rect" title=" " alt="" coords="577,225,701,251"/>
<area shape="poly" title=" " alt="" coords="739,180,671,220,668,216,736,175"/>
<area shape="rect" title=" " alt="" coords="725,225,787,251"/>
<area shape="poly" title=" " alt="" coords="759,178,759,212,753,212,753,178"/>
<area shape="poly" title=" " alt="" coords="820,175,1081,223,1080,228,819,180"/>
<area shape="rect" title=" " alt="" coords="811,225,877,251"/>
<area shape="poly" title=" " alt="" coords="772,175,821,214,817,219,768,179"/>
<area shape="rect" title=" " alt="" coords="901,225,979,251"/>
<area shape="poly" title=" " alt="" coords="787,175,898,218,896,223,785,180"/>
<area shape="rect" title=" " alt="" coords="1003,225,1069,251"/>
<area shape="poly" title=" " alt="" coords="802,175,990,222,989,227,800,180"/>
</map>
</div>
</div>
<p><a href="drogon__test_8h_source.html">浏览源代码.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
类</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structdrogon_1_1test_1_1internal_1_1is__printable.html">drogon::test::internal::is_printable&lt; _Tp, dummy &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structdrogon_1_1test_1_1internal_1_1is__printable_3_01__Tp_00_01std_1_1enable__if__t_3_01std_1_19162cf99a944461f6a991f1ae0d15631.html">drogon::test::internal::is_printable&lt; _Tp, std::enable_if_t&lt; std::is_same_v&lt; decltype(std::cout&lt;&lt; std::declval&lt; _Tp &gt;()), std::ostream &amp; &gt; &gt; &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structdrogon_1_1test_1_1internal_1_1ComparsionResult.html">drogon::test::internal::ComparsionResult</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structdrogon_1_1test_1_1internal_1_1Lhs.html">drogon::test::internal::Lhs&lt; T &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structdrogon_1_1test_1_1internal_1_1Decomposer.html">drogon::test::internal::Decomposer</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdrogon_1_1test_1_1ThreadSafeStream.html">drogon::test::ThreadSafeStream</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdrogon_1_1test_1_1CaseBase.html">drogon::test::CaseBase</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdrogon_1_1test_1_1Case.html">drogon::test::Case</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structdrogon_1_1test_1_1TestCase.html">drogon::test::TestCase</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
命名空间</h2></td></tr>
<tr class="memitem:namespacedrogon" id="r_namespacedrogon"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedrogon.html">drogon</a></td></tr>
<tr class="memdesc:namespacedrogon"><td class="mdescLeft">&#160;</td><td class="mdescRight">Drogon Test is a minimal effort test framework developed because the major C++ test frameworks doesn't handle async programs well. Drogon Test's syntax is inspired by both Google Test and Catch2 <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:namespacedrogon_1_1test" id="r_namespacedrogon_1_1test"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedrogon_1_1test.html">drogon::test</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:namespacedrogon_1_1test_1_1internal" id="r_namespacedrogon_1_1test_1_1internal"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedrogon_1_1test_1_1internal.html">drogon::test::internal</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
宏定义</h2></td></tr>
<tr class="memitem:a95c9a8f6f2c4e521f63f390f50c3b9ee" id="r_a95c9a8f6f2c4e521f63f390f50c3b9ee"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#a95c9a8f6f2c4e521f63f390f50c3b9ee">TEST_CTX</a>&#160;&#160;&#160;drogon_test_ctx_</td></tr>
<tr class="separator:a95c9a8f6f2c4e521f63f390f50c3b9ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1b8fe4d750d703a36d80ce9a02a8b24c" id="r_a1b8fe4d750d703a36d80ce9a02a8b24c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#a1b8fe4d750d703a36d80ce9a02a8b24c">DROGON_TESTCASE_PREIX_</a>&#160;&#160;&#160;drtest__</td></tr>
<tr class="separator:a1b8fe4d750d703a36d80ce9a02a8b24c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad44a5a908b69d7be334b03975283b1de" id="r_ad44a5a908b69d7be334b03975283b1de"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#ad44a5a908b69d7be334b03975283b1de">DROGON_TESTCASE_PREIX_STR_</a>&#160;&#160;&#160;&quot;drtest__&quot;</td></tr>
<tr class="separator:ad44a5a908b69d7be334b03975283b1de"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a66af2211d459d1f12ec6a2e813ddc34d" id="r_a66af2211d459d1f12ec6a2e813ddc34d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#a66af2211d459d1f12ec6a2e813ddc34d">TEST_FLAG_</a>&#160;&#160;&#160;drgood__</td></tr>
<tr class="separator:a66af2211d459d1f12ec6a2e813ddc34d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a75003e94faec1650a1c6916a8fd13c97" id="r_a75003e94faec1650a1c6916a8fd13c97"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#a75003e94faec1650a1c6916a8fd13c97">DROGON_TEST_STRINGIFY__</a>(x)&#160;&#160;&#160;#x</td></tr>
<tr class="separator:a75003e94faec1650a1c6916a8fd13c97"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad8ed8825840e6b27454a5ceb375dcff6" id="r_ad8ed8825840e6b27454a5ceb375dcff6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#ad8ed8825840e6b27454a5ceb375dcff6">DROGON_TEST_STRINGIFY</a>(x)&#160;&#160;&#160;<a class="el" href="drogon__test_8h.html#a75003e94faec1650a1c6916a8fd13c97">DROGON_TEST_STRINGIFY__</a>(x)</td></tr>
<tr class="separator:ad8ed8825840e6b27454a5ceb375dcff6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab49c8deb5e5e539b2ee4202622be3e23" id="r_ab49c8deb5e5e539b2ee4202622be3e23"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#ab49c8deb5e5e539b2ee4202622be3e23">DROGON_TEST_CONCAT__</a>(a,  b)&#160;&#160;&#160;a##b</td></tr>
<tr class="separator:ab49c8deb5e5e539b2ee4202622be3e23"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afa7bcd74b5a0e95472f6ba17b782355f" id="r_afa7bcd74b5a0e95472f6ba17b782355f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#afa7bcd74b5a0e95472f6ba17b782355f">DROGON_TEST_CONCAT</a>(a,  b)&#160;&#160;&#160;<a class="el" href="drogon__test_8h.html#ab49c8deb5e5e539b2ee4202622be3e23">DROGON_TEST_CONCAT__</a>(a, b)</td></tr>
<tr class="separator:afa7bcd74b5a0e95472f6ba17b782355f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9325970d73c44903fc8c2d68fe7cb218" id="r_a9325970d73c44903fc8c2d68fe7cb218"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#a9325970d73c44903fc8c2d68fe7cb218">DROGON_TEST_START_SUPRESSION_</a></td></tr>
<tr class="separator:a9325970d73c44903fc8c2d68fe7cb218"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a400fec7ce530a1b405d9e828f7affa71" id="r_a400fec7ce530a1b405d9e828f7affa71"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#a400fec7ce530a1b405d9e828f7affa71">DROGON_TEST_END_SUPRESSION_</a></td></tr>
<tr class="separator:a400fec7ce530a1b405d9e828f7affa71"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7910364e292cf15d9df6cebe1dadd329" id="r_a7910364e292cf15d9df6cebe1dadd329"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#a7910364e292cf15d9df6cebe1dadd329">DROGON_TEST_SUPPRESS_PARENTHESES_WARNING_</a></td></tr>
<tr class="separator:a7910364e292cf15d9df6cebe1dadd329"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a29855c1c444b688e9d4941b70dea778e" id="r_a29855c1c444b688e9d4941b70dea778e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#a29855c1c444b688e9d4941b70dea778e">DROGON_TEST_SUPPRESS_UNUSED_VALUE_WARNING_</a></td></tr>
<tr class="separator:a29855c1c444b688e9d4941b70dea778e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0d79efc776972dda4f6c2d58beb86e0d" id="r_a0d79efc776972dda4f6c2d58beb86e0d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#a0d79efc776972dda4f6c2d58beb86e0d">ERROR_MSG</a>(func_name,  expr)</td></tr>
<tr class="separator:a0d79efc776972dda4f6c2d58beb86e0d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a952682eef4ca541f7ae4067c44776c60" id="r_a952682eef4ca541f7ae4067c44776c60"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#a952682eef4ca541f7ae4067c44776c60">PASSED_MSG</a>(func_name,  expr)</td></tr>
<tr class="separator:a952682eef4ca541f7ae4067c44776c60"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6f606b533ca7d67311ffcfcba098acc6" id="r_a6f606b533ca7d67311ffcfcba098acc6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#a6f606b533ca7d67311ffcfcba098acc6">SET_TEST_SUCCESS__</a></td></tr>
<tr class="separator:a6f606b533ca7d67311ffcfcba098acc6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad956e74d4720b19e005a3cadc2c48c71" id="r_ad956e74d4720b19e005a3cadc2c48c71"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#ad956e74d4720b19e005a3cadc2c48c71">TEST_INTERNAL__</a>(func_name,  expr,  eval,  on_exception,  on_non_standard_exception,  on_leaving)</td></tr>
<tr class="separator:ad956e74d4720b19e005a3cadc2c48c71"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adf4ddef47e462b751efa021d22e7847c" id="r_adf4ddef47e462b751efa021d22e7847c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#adf4ddef47e462b751efa021d22e7847c">EVAL_AND_CHECK_TRUE__</a>(func_name,  expr)</td></tr>
<tr class="separator:adf4ddef47e462b751efa021d22e7847c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ace0f2ddcefa078f52d1fec20d0f055e0" id="r_ace0f2ddcefa078f52d1fec20d0f055e0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#ace0f2ddcefa078f52d1fec20d0f055e0">PRINT_UNEXPECTED_EXCEPTION__</a>(func_name,  expr)</td></tr>
<tr class="separator:ace0f2ddcefa078f52d1fec20d0f055e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1de12ccd156b35be5471ec0952670e44" id="r_a1de12ccd156b35be5471ec0952670e44"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#a1de12ccd156b35be5471ec0952670e44">PRINT_PASSED__</a>(func_name,  expr)</td></tr>
<tr class="separator:a1de12ccd156b35be5471ec0952670e44"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad4a46c6b462d9fc5e11269f2bfb1fba0" id="r_ad4a46c6b462d9fc5e11269f2bfb1fba0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#ad4a46c6b462d9fc5e11269f2bfb1fba0">RETURN_ON_FAILURE__</a></td></tr>
<tr class="separator:ad4a46c6b462d9fc5e11269f2bfb1fba0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abdb1bd68fa2b06fc270d82189117c1b1" id="r_abdb1bd68fa2b06fc270d82189117c1b1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#abdb1bd68fa2b06fc270d82189117c1b1">CO_RETURN_ON_FAILURE__</a></td></tr>
<tr class="separator:abdb1bd68fa2b06fc270d82189117c1b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a44264190433002cd216d1482e0eec6f0" id="r_a44264190433002cd216d1482e0eec6f0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#a44264190433002cd216d1482e0eec6f0">DIE_ON_FAILURE__</a></td></tr>
<tr class="separator:a44264190433002cd216d1482e0eec6f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4a30e396f74718f7cca424dd36a137b5" id="r_a4a30e396f74718f7cca424dd36a137b5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#a4a30e396f74718f7cca424dd36a137b5">PRINT_NONSTANDARD_EXCEPTION__</a>(func_name,  expr)</td></tr>
<tr class="separator:a4a30e396f74718f7cca424dd36a137b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a358075fc4fab47d0e2467906be0d04f7" id="r_a358075fc4fab47d0e2467906be0d04f7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#a358075fc4fab47d0e2467906be0d04f7">EVAL__</a>(expr)</td></tr>
<tr class="separator:a358075fc4fab47d0e2467906be0d04f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6d63c9607d028296e8027e71680c3d56" id="r_a6d63c9607d028296e8027e71680c3d56"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#a6d63c9607d028296e8027e71680c3d56">NOTHING__</a></td></tr>
<tr class="separator:a6d63c9607d028296e8027e71680c3d56"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1ec91a78685d26783ff7e6fbe0a50014" id="r_a1ec91a78685d26783ff7e6fbe0a50014"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#a1ec91a78685d26783ff7e6fbe0a50014">PRINT_ERR_NOEXCEPTION__</a>(expr,  func_name)</td></tr>
<tr class="separator:a1ec91a78685d26783ff7e6fbe0a50014"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a834beef0fff8b144b21d8cd924782f65" id="r_a834beef0fff8b144b21d8cd924782f65"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#a834beef0fff8b144b21d8cd924782f65">PRINT_ERR_WITHEXCEPTION__</a>(expr,  func_name)</td></tr>
<tr class="separator:a834beef0fff8b144b21d8cd924782f65"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad1a17fb9850063ccf1a38aac7ac2b4de" id="r_ad1a17fb9850063ccf1a38aac7ac2b4de"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#ad1a17fb9850063ccf1a38aac7ac2b4de">PRINT_ERR_BAD_EXCEPTION__</a>( expr,  func_name,  excep_type,  exceptionThrown,  correctExceptionType)</td></tr>
<tr class="separator:ad1a17fb9850063ccf1a38aac7ac2b4de"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aae1f8ff3bdae214b7c4b5f8c6337d681" id="r_aae1f8ff3bdae214b7c4b5f8c6337d681"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#aae1f8ff3bdae214b7c4b5f8c6337d681">CHECK_INTERNAL__</a>(expr,  func_name,  on_leave)</td></tr>
<tr class="separator:aae1f8ff3bdae214b7c4b5f8c6337d681"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac131f592112f38e43d8db864e0cc9e61" id="r_ac131f592112f38e43d8db864e0cc9e61"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#ac131f592112f38e43d8db864e0cc9e61">CHECK_THROWS_INTERNAL__</a>(expr,  func_name,  on_leave)</td></tr>
<tr class="separator:ac131f592112f38e43d8db864e0cc9e61"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8d396ce4ed11cfa83862455d6ed3bad8" id="r_a8d396ce4ed11cfa83862455d6ed3bad8"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#a8d396ce4ed11cfa83862455d6ed3bad8">CHECK_THROWS_AS_INTERNAL__</a>(expr,  func_name,  except_type,  on_leave)</td></tr>
<tr class="separator:a8d396ce4ed11cfa83862455d6ed3bad8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af4e6d8372d21119e608934ddacde39fd" id="r_af4e6d8372d21119e608934ddacde39fd"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#af4e6d8372d21119e608934ddacde39fd">CHECK_NOTHROW_INTERNAL__</a>(expr,  func_name,  on_leave)</td></tr>
<tr class="separator:af4e6d8372d21119e608934ddacde39fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4d20f8c0701894cac4dab32c899d9789" id="r_a4d20f8c0701894cac4dab32c899d9789"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#a4d20f8c0701894cac4dab32c899d9789">CHECK</a>(expr)&#160;&#160;&#160;<a class="el" href="drogon__test_8h.html#aae1f8ff3bdae214b7c4b5f8c6337d681">CHECK_INTERNAL__</a>(expr, &quot;CHECK&quot;, <a class="el" href="drogon__test_8h.html#a6d63c9607d028296e8027e71680c3d56">NOTHING__</a>)</td></tr>
<tr class="separator:a4d20f8c0701894cac4dab32c899d9789"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab35bfeeeae3c3cb223f550f1d6e9a396" id="r_ab35bfeeeae3c3cb223f550f1d6e9a396"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#ab35bfeeeae3c3cb223f550f1d6e9a396">CHECK_THROWS</a>(expr)&#160;&#160;&#160;    <a class="el" href="drogon__test_8h.html#ac131f592112f38e43d8db864e0cc9e61">CHECK_THROWS_INTERNAL__</a>(expr, &quot;CHECK_THROWS&quot;, <a class="el" href="drogon__test_8h.html#a6d63c9607d028296e8027e71680c3d56">NOTHING__</a>)</td></tr>
<tr class="separator:ab35bfeeeae3c3cb223f550f1d6e9a396"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6c1cf3811206fc694cbba31364b61d87" id="r_a6c1cf3811206fc694cbba31364b61d87"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#a6c1cf3811206fc694cbba31364b61d87">CHECK_NOTHROW</a>(expr)&#160;&#160;&#160;    <a class="el" href="drogon__test_8h.html#af4e6d8372d21119e608934ddacde39fd">CHECK_NOTHROW_INTERNAL__</a>(expr, &quot;CHECK_NOTHROW&quot;, <a class="el" href="drogon__test_8h.html#a6d63c9607d028296e8027e71680c3d56">NOTHING__</a>)</td></tr>
<tr class="separator:a6c1cf3811206fc694cbba31364b61d87"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae6fcf08f59f69522d952443daf7293b2" id="r_ae6fcf08f59f69522d952443daf7293b2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#ae6fcf08f59f69522d952443daf7293b2">CHECK_THROWS_AS</a>(expr,  except_type)&#160;&#160;&#160;    <a class="el" href="drogon__test_8h.html#a8d396ce4ed11cfa83862455d6ed3bad8">CHECK_THROWS_AS_INTERNAL__</a>(expr, &quot;CHECK_THROWS_AS&quot;, except_type, <a class="el" href="drogon__test_8h.html#a6d63c9607d028296e8027e71680c3d56">NOTHING__</a>)</td></tr>
<tr class="separator:ae6fcf08f59f69522d952443daf7293b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad9f2db71e103991db7d6f001a955285f" id="r_ad9f2db71e103991db7d6f001a955285f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#ad9f2db71e103991db7d6f001a955285f">REQUIRE</a>(expr)&#160;&#160;&#160;<a class="el" href="drogon__test_8h.html#aae1f8ff3bdae214b7c4b5f8c6337d681">CHECK_INTERNAL__</a>(expr, &quot;REQUIRE&quot;, <a class="el" href="drogon__test_8h.html#ad4a46c6b462d9fc5e11269f2bfb1fba0">RETURN_ON_FAILURE__</a>)</td></tr>
<tr class="separator:ad9f2db71e103991db7d6f001a955285f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7d8d2d630f08ecda4a8ddf20d011814f" id="r_a7d8d2d630f08ecda4a8ddf20d011814f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#a7d8d2d630f08ecda4a8ddf20d011814f">REQUIRE_THROWS</a>(expr)&#160;&#160;&#160;    <a class="el" href="drogon__test_8h.html#ac131f592112f38e43d8db864e0cc9e61">CHECK_THROWS_INTERNAL__</a>(expr, &quot;REQUIRE_THROWS&quot;, <a class="el" href="drogon__test_8h.html#ad4a46c6b462d9fc5e11269f2bfb1fba0">RETURN_ON_FAILURE__</a>)</td></tr>
<tr class="separator:a7d8d2d630f08ecda4a8ddf20d011814f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaf314e5b53e024051ea5d0a9eb6d75a9" id="r_aaf314e5b53e024051ea5d0a9eb6d75a9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#aaf314e5b53e024051ea5d0a9eb6d75a9">REQUIRE_NOTHROW</a>(expr)&#160;&#160;&#160;    <a class="el" href="drogon__test_8h.html#af4e6d8372d21119e608934ddacde39fd">CHECK_NOTHROW_INTERNAL__</a>(expr, &quot;REQUIRE_NOTHROW&quot;, <a class="el" href="drogon__test_8h.html#ad4a46c6b462d9fc5e11269f2bfb1fba0">RETURN_ON_FAILURE__</a>)</td></tr>
<tr class="separator:aaf314e5b53e024051ea5d0a9eb6d75a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa89edecfcb7595159a2bc668d905badb" id="r_aa89edecfcb7595159a2bc668d905badb"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#aa89edecfcb7595159a2bc668d905badb">REQUIRE_THROWS_AS</a>(expr,  except_type)</td></tr>
<tr class="separator:aa89edecfcb7595159a2bc668d905badb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae747547fe1548ac7c0cae3053db37439" id="r_ae747547fe1548ac7c0cae3053db37439"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#ae747547fe1548ac7c0cae3053db37439">CO_REQUIRE</a>(expr)&#160;&#160;&#160;    <a class="el" href="drogon__test_8h.html#aae1f8ff3bdae214b7c4b5f8c6337d681">CHECK_INTERNAL__</a>(expr, &quot;CO_REQUIRE&quot;, <a class="el" href="drogon__test_8h.html#abdb1bd68fa2b06fc270d82189117c1b1">CO_RETURN_ON_FAILURE__</a>)</td></tr>
<tr class="separator:ae747547fe1548ac7c0cae3053db37439"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a97ade960748baeb15dc1bacd109127c7" id="r_a97ade960748baeb15dc1bacd109127c7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#a97ade960748baeb15dc1bacd109127c7">CO_REQUIRE_THROWS</a>(expr)&#160;&#160;&#160;    <a class="el" href="drogon__test_8h.html#ac131f592112f38e43d8db864e0cc9e61">CHECK_THROWS_INTERNAL__</a>(expr, &quot;CO_REQUIRE_THROWS&quot;, <a class="el" href="drogon__test_8h.html#abdb1bd68fa2b06fc270d82189117c1b1">CO_RETURN_ON_FAILURE__</a>)</td></tr>
<tr class="separator:a97ade960748baeb15dc1bacd109127c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa3c2d3a87526926e2f027f25c1bc5902" id="r_aa3c2d3a87526926e2f027f25c1bc5902"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#aa3c2d3a87526926e2f027f25c1bc5902">CO_REQUIRE_NOTHROW</a>(expr)&#160;&#160;&#160;    <a class="el" href="drogon__test_8h.html#af4e6d8372d21119e608934ddacde39fd">CHECK_NOTHROW_INTERNAL__</a>(expr, &quot;CO_REQUIRE_NOTHROW&quot;, <a class="el" href="drogon__test_8h.html#abdb1bd68fa2b06fc270d82189117c1b1">CO_RETURN_ON_FAILURE__</a>)</td></tr>
<tr class="separator:aa3c2d3a87526926e2f027f25c1bc5902"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a62cf2e225a81c372ace8dd3ec0648287" id="r_a62cf2e225a81c372ace8dd3ec0648287"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#a62cf2e225a81c372ace8dd3ec0648287">CO_REQUIRE_THROWS_AS</a>(expr,  except_type)</td></tr>
<tr class="separator:a62cf2e225a81c372ace8dd3ec0648287"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2646af79b23e5e7af073453911cd856e" id="r_a2646af79b23e5e7af073453911cd856e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#a2646af79b23e5e7af073453911cd856e">MANDATE</a>(expr)&#160;&#160;&#160;<a class="el" href="drogon__test_8h.html#aae1f8ff3bdae214b7c4b5f8c6337d681">CHECK_INTERNAL__</a>(expr, &quot;MANDATE&quot;, <a class="el" href="drogon__test_8h.html#a44264190433002cd216d1482e0eec6f0">DIE_ON_FAILURE__</a>)</td></tr>
<tr class="separator:a2646af79b23e5e7af073453911cd856e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab4d0a4b3a7cdb007f39535a58d09584b" id="r_ab4d0a4b3a7cdb007f39535a58d09584b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#ab4d0a4b3a7cdb007f39535a58d09584b">MANDATE_THROWS</a>(expr)&#160;&#160;&#160;    <a class="el" href="drogon__test_8h.html#ac131f592112f38e43d8db864e0cc9e61">CHECK_THROWS_INTERNAL__</a>(expr, &quot;MANDATE_THROWS&quot;, <a class="el" href="drogon__test_8h.html#a44264190433002cd216d1482e0eec6f0">DIE_ON_FAILURE__</a>)</td></tr>
<tr class="separator:ab4d0a4b3a7cdb007f39535a58d09584b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae07bf770b561d0686fe7bf10d025b19b" id="r_ae07bf770b561d0686fe7bf10d025b19b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#ae07bf770b561d0686fe7bf10d025b19b">MANDATE_NOTHROW</a>(expr)&#160;&#160;&#160;    <a class="el" href="drogon__test_8h.html#af4e6d8372d21119e608934ddacde39fd">CHECK_NOTHROW_INTERNAL__</a>(expr, &quot;MANDATE_NOTHROW&quot;, <a class="el" href="drogon__test_8h.html#a44264190433002cd216d1482e0eec6f0">DIE_ON_FAILURE__</a>)</td></tr>
<tr class="separator:ae07bf770b561d0686fe7bf10d025b19b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a07d57654f811e9f0329e55e895b66d45" id="r_a07d57654f811e9f0329e55e895b66d45"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#a07d57654f811e9f0329e55e895b66d45">MANDATE_THROWS_AS</a>(expr,  except_type)</td></tr>
<tr class="separator:a07d57654f811e9f0329e55e895b66d45"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af71c2d932fb98d159c629b2a42fa90a1" id="r_af71c2d932fb98d159c629b2a42fa90a1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#af71c2d932fb98d159c629b2a42fa90a1">STATIC_REQUIRE</a>(expr)</td></tr>
<tr class="separator:af71c2d932fb98d159c629b2a42fa90a1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac8d1eaf65528f86b445cf6e45b2d72c9" id="r_ac8d1eaf65528f86b445cf6e45b2d72c9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#ac8d1eaf65528f86b445cf6e45b2d72c9">FAIL</a>(...)</td></tr>
<tr class="separator:ac8d1eaf65528f86b445cf6e45b2d72c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a784f4eea033e29ab7c741e0f67002e2d" id="r_a784f4eea033e29ab7c741e0f67002e2d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#a784f4eea033e29ab7c741e0f67002e2d">FAULT</a>(...)</td></tr>
<tr class="separator:a784f4eea033e29ab7c741e0f67002e2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9ef5057c6ed94ca63a4d23e3276b6f2b" id="r_a9ef5057c6ed94ca63a4d23e3276b6f2b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#a9ef5057c6ed94ca63a4d23e3276b6f2b">SUCCESS</a>()</td></tr>
<tr class="separator:a9ef5057c6ed94ca63a4d23e3276b6f2b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa26b550f6ab03fc64b57cc3c8fdfe350" id="r_aa26b550f6ab03fc64b57cc3c8fdfe350"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#aa26b550f6ab03fc64b57cc3c8fdfe350">DROGON_TEST_CLASS_NAME_</a>(test_name)&#160;&#160;&#160;    <a class="el" href="drogon__test_8h.html#afa7bcd74b5a0e95472f6ba17b782355f">DROGON_TEST_CONCAT</a>(<a class="el" href="drogon__test_8h.html#a1b8fe4d750d703a36d80ce9a02a8b24c">DROGON_TESTCASE_PREIX_</a>, test_name)</td></tr>
<tr class="separator:aa26b550f6ab03fc64b57cc3c8fdfe350"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a78fb6ad8452a23ec86b5131399e3e13e" id="r_a78fb6ad8452a23ec86b5131399e3e13e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#a78fb6ad8452a23ec86b5131399e3e13e">DROGON_TEST</a>(test_name)</td></tr>
<tr class="separator:a78fb6ad8452a23ec86b5131399e3e13e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ace7dfafe1668385831aee545bdfe8401" id="r_ace7dfafe1668385831aee545bdfe8401"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#ace7dfafe1668385831aee545bdfe8401">SUBTEST</a>(name)&#160;&#160;&#160;(std::make_shared&lt;<a class="el" href="classdrogon_1_1test_1_1Case.html">drogon::test::Case</a>&gt;(<a class="el" href="drogon__test_8h.html#a95c9a8f6f2c4e521f63f390f50c3b9ee">TEST_CTX</a>, name))</td></tr>
<tr class="separator:ace7dfafe1668385831aee545bdfe8401"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a656912e38531d24851d379a52b10d077" id="r_a656912e38531d24851d379a52b10d077"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="drogon__test_8h.html#a656912e38531d24851d379a52b10d077">SUBSECTION</a>(name)</td></tr>
<tr class="separator:a656912e38531d24851d379a52b10d077"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
函数</h2></td></tr>
<tr class="memitem:a5e02295458b60a81d9e30657fa127fd7" id="r_a5e02295458b60a81d9e30657fa127fd7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="exports_8h.html#a00d0a001c2dd03906272e00b0598182e">DROGON_EXPORT</a> void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedrogon_1_1test_1_1internal.html#a5e02295458b60a81d9e30657fa127fd7">drogon::test::internal::registerCase</a> (<a class="el" href="classdrogon_1_1test_1_1Case.html">Case</a> *test)</td></tr>
<tr class="separator:a5e02295458b60a81d9e30657fa127fd7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9cfff577683c69428a9ac730496973b5" id="r_a9cfff577683c69428a9ac730496973b5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="exports_8h.html#a00d0a001c2dd03906272e00b0598182e">DROGON_EXPORT</a> void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedrogon_1_1test_1_1internal.html#a9cfff577683c69428a9ac730496973b5">drogon::test::internal::unregisterCase</a> (<a class="el" href="classdrogon_1_1test_1_1Case.html">Case</a> *test)</td></tr>
<tr class="separator:a9cfff577683c69428a9ac730496973b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac76bb70a871d6253cc2cea75e585643d" id="r_ac76bb70a871d6253cc2cea75e585643d"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedrogon_1_1test_1_1internal.html#ac76bb70a871d6253cc2cea75e585643d">drogon::test::internal::escapeString</a> (const std::string_view sv)</td></tr>
<tr class="separator:ac76bb70a871d6253cc2cea75e585643d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aad0dcd7c1278393087a7c67e8ac97c99" id="r_aad0dcd7c1278393087a7c67e8ac97c99"><td class="memItemLeft" align="right" valign="top"><a class="el" href="exports_8h.html#a00d0a001c2dd03906272e00b0598182e">DROGON_EXPORT</a> std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedrogon_1_1test_1_1internal.html#aad0dcd7c1278393087a7c67e8ac97c99">drogon::test::internal::prettifyString</a> (const std::string_view sv, size_t maxLength=120)</td></tr>
<tr class="separator:aad0dcd7c1278393087a7c67e8ac97c99"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae207e5b7935ba473df26394fff28417c" id="r_ae207e5b7935ba473df26394fff28417c"><td class="memTemplParams" colspan="2">template&lt;typename... Args&gt; </td></tr>
<tr class="memitem:ae207e5b7935ba473df26394fff28417c"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacedrogon_1_1test_1_1internal.html#ae207e5b7935ba473df26394fff28417c">drogon::test::internal::outputReason</a> (Args &amp;&amp;...args)</td></tr>
<tr class="separator:ae207e5b7935ba473df26394fff28417c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abdcea748a68e8e14f243232bbea43a18" id="r_abdcea748a68e8e14f243232bbea43a18"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:abdcea748a68e8e14f243232bbea43a18"><td class="memTemplItemLeft" align="right" valign="top">std::string&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacedrogon_1_1test_1_1internal.html#abdcea748a68e8e14f243232bbea43a18">drogon::test::internal::attemptPrint</a> (T &amp;&amp;v)</td></tr>
<tr class="separator:abdcea748a68e8e14f243232bbea43a18"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a02febbd44548abc6efe2fba930a79fd3" id="r_a02febbd44548abc6efe2fba930a79fd3"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedrogon_1_1test_1_1internal.html#a02febbd44548abc6efe2fba930a79fd3">drogon::test::internal::stringifyFuncCall</a> (const std::string &amp;funcName)</td></tr>
<tr class="separator:a02febbd44548abc6efe2fba930a79fd3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac9ed2483b991088aa8d069a1e1a2648a" id="r_ac9ed2483b991088aa8d069a1e1a2648a"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedrogon_1_1test_1_1internal.html#ac9ed2483b991088aa8d069a1e1a2648a">drogon::test::internal::stringifyFuncCall</a> (const std::string &amp;funcName, const std::string &amp;param1)</td></tr>
<tr class="separator:ac9ed2483b991088aa8d069a1e1a2648a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a12f5f8a76031b2ebfbd3e38e49aca4b8" id="r_a12f5f8a76031b2ebfbd3e38e49aca4b8"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedrogon_1_1test_1_1internal.html#a12f5f8a76031b2ebfbd3e38e49aca4b8">drogon::test::internal::stringifyFuncCall</a> (const std::string &amp;funcName, const std::string &amp;param1, const std::string &amp;param2)</td></tr>
<tr class="separator:a12f5f8a76031b2ebfbd3e38e49aca4b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac4adb49baa6224a9eb1ab4bdf19e2211" id="r_ac4adb49baa6224a9eb1ab4bdf19e2211"><td class="memItemLeft" align="right" valign="top"><a class="el" href="exports_8h.html#a00d0a001c2dd03906272e00b0598182e">DROGON_EXPORT</a> <a class="el" href="classdrogon_1_1test_1_1ThreadSafeStream.html">ThreadSafeStream</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedrogon_1_1test.html#ac4adb49baa6224a9eb1ab4bdf19e2211">drogon::test::print</a> ()</td></tr>
<tr class="separator:ac4adb49baa6224a9eb1ab4bdf19e2211"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abd86acf1acb0b30934b7e57e7a6b22ad" id="r_abd86acf1acb0b30934b7e57e7a6b22ad"><td class="memItemLeft" align="right" valign="top"><a class="el" href="exports_8h.html#a00d0a001c2dd03906272e00b0598182e">DROGON_EXPORT</a> <a class="el" href="classdrogon_1_1test_1_1ThreadSafeStream.html">ThreadSafeStream</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedrogon_1_1test.html#abd86acf1acb0b30934b7e57e7a6b22ad">drogon::test::printErr</a> ()</td></tr>
<tr class="separator:abd86acf1acb0b30934b7e57e7a6b22ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1a68c1f72ed74439266aaff744fcd5c3" id="r_a1a68c1f72ed74439266aaff744fcd5c3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="exports_8h.html#a00d0a001c2dd03906272e00b0598182e">DROGON_EXPORT</a> void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedrogon_1_1test.html#a1a68c1f72ed74439266aaff744fcd5c3">drogon::test::printTestStats</a> ()</td></tr>
<tr class="separator:a1a68c1f72ed74439266aaff744fcd5c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a82539117dee02f990d9cad9ed0c1038f" id="r_a82539117dee02f990d9cad9ed0c1038f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="exports_8h.html#a00d0a001c2dd03906272e00b0598182e">DROGON_EXPORT</a> int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedrogon_1_1test.html#a82539117dee02f990d9cad9ed0c1038f">drogon::test::run</a> (int argc, char **argv)</td></tr>
<tr class="separator:a82539117dee02f990d9cad9ed0c1038f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="var-members" name="var-members"></a>
变量</h2></td></tr>
<tr class="memitem:a61d93b38b33d498924ec06cfdc27971e" id="r_a61d93b38b33d498924ec06cfdc27971e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="exports_8h.html#a00d0a001c2dd03906272e00b0598182e">DROGON_EXPORT</a> std::atomic&lt; size_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedrogon_1_1test_1_1internal.html#a61d93b38b33d498924ec06cfdc27971e">drogon::test::internal::numAssertions</a></td></tr>
<tr class="separator:a61d93b38b33d498924ec06cfdc27971e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6c0af84d8691b60f689c9a4c7de1bf9f" id="r_a6c0af84d8691b60f689c9a4c7de1bf9f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="exports_8h.html#a00d0a001c2dd03906272e00b0598182e">DROGON_EXPORT</a> std::atomic&lt; size_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedrogon_1_1test_1_1internal.html#a6c0af84d8691b60f689c9a4c7de1bf9f">drogon::test::internal::numCorrectAssertions</a></td></tr>
<tr class="separator:a6c0af84d8691b60f689c9a4c7de1bf9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a77f37edffb7b4027914ae387b60e6e9c" id="r_a77f37edffb7b4027914ae387b60e6e9c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="exports_8h.html#a00d0a001c2dd03906272e00b0598182e">DROGON_EXPORT</a> std::atomic&lt; size_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedrogon_1_1test_1_1internal.html#a77f37edffb7b4027914ae387b60e6e9c">drogon::test::internal::numFailedTestCases</a></td></tr>
<tr class="separator:a77f37edffb7b4027914ae387b60e6e9c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a60d2fe96589bc00aab70cf75ea6f3c20" id="r_a60d2fe96589bc00aab70cf75ea6f3c20"><td class="memItemLeft" align="right" valign="top"><a class="el" href="exports_8h.html#a00d0a001c2dd03906272e00b0598182e">DROGON_EXPORT</a> bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacedrogon_1_1test_1_1internal.html#a60d2fe96589bc00aab70cf75ea6f3c20">drogon::test::internal::printSuccessfulTests</a></td></tr>
<tr class="separator:a60d2fe96589bc00aab70cf75ea6f3c20"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">宏定义说明</h2>
<a id="a4d20f8c0701894cac4dab32c899d9789" name="a4d20f8c0701894cac4dab32c899d9789"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4d20f8c0701894cac4dab32c899d9789">&#9670;&#160;</a></span>CHECK</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CHECK</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">expr</td><td>)</td>
          <td>&#160;&#160;&#160;<a class="el" href="drogon__test_8h.html#aae1f8ff3bdae214b7c4b5f8c6337d681">CHECK_INTERNAL__</a>(expr, &quot;CHECK&quot;, <a class="el" href="drogon__test_8h.html#a6d63c9607d028296e8027e71680c3d56">NOTHING__</a>)</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="aae1f8ff3bdae214b7c4b5f8c6337d681" name="aae1f8ff3bdae214b7c4b5f8c6337d681"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aae1f8ff3bdae214b7c4b5f8c6337d681">&#9670;&#160;</a></span>CHECK_INTERNAL__</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CHECK_INTERNAL__</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">expr, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">func_name, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">on_leave&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>值:</b><div class="fragment"><div class="line">    <span class="keywordflow">do</span>                                                                   \</div>
<div class="line">    {                                                                    \</div>
<div class="line">        TEST_INTERNAL__(func_name,                                       \</div>
<div class="line">                        expr,                                            \</div>
<div class="line">                        <a class="code hl_define" href="drogon__test_8h.html#adf4ddef47e462b751efa021d22e7847c">EVAL_AND_CHECK_TRUE__</a>(func_name, expr),          \</div>
<div class="line">                        <a class="code hl_define" href="drogon__test_8h.html#ace0f2ddcefa078f52d1fec20d0f055e0">PRINT_UNEXPECTED_EXCEPTION__</a>(func_name, #expr),  \</div>
<div class="line">                        <a class="code hl_define" href="drogon__test_8h.html#a4a30e396f74718f7cca424dd36a137b5">PRINT_NONSTANDARD_EXCEPTION__</a>(func_name, #expr), \</div>
<div class="line">                        on_leave <a class="code hl_define" href="drogon__test_8h.html#a1de12ccd156b35be5471ec0952670e44">PRINT_PASSED__</a>(func_name, #expr));      \</div>
<div class="line">    } <span class="keywordflow">while</span> (0)</div>
<div class="ttc" id="adrogon__test_8h_html_a1de12ccd156b35be5471ec0952670e44"><div class="ttname"><a href="drogon__test_8h.html#a1de12ccd156b35be5471ec0952670e44">PRINT_PASSED__</a></div><div class="ttdeci">#define PRINT_PASSED__(func_name, expr)</div><div class="ttdef"><b>Definition</b> drogon_test.h:471</div></div>
<div class="ttc" id="adrogon__test_8h_html_a4a30e396f74718f7cca424dd36a137b5"><div class="ttname"><a href="drogon__test_8h.html#a4a30e396f74718f7cca424dd36a137b5">PRINT_NONSTANDARD_EXCEPTION__</a></div><div class="ttdeci">#define PRINT_NONSTANDARD_EXCEPTION__(func_name, expr)</div><div class="ttdef"><b>Definition</b> drogon_test.h:506</div></div>
<div class="ttc" id="adrogon__test_8h_html_ace0f2ddcefa078f52d1fec20d0f055e0"><div class="ttname"><a href="drogon__test_8h.html#ace0f2ddcefa078f52d1fec20d0f055e0">PRINT_UNEXPECTED_EXCEPTION__</a></div><div class="ttdeci">#define PRINT_UNEXPECTED_EXCEPTION__(func_name, expr)</div><div class="ttdef"><b>Definition</b> drogon_test.h:463</div></div>
<div class="ttc" id="adrogon__test_8h_html_adf4ddef47e462b751efa021d22e7847c"><div class="ttname"><a href="drogon__test_8h.html#adf4ddef47e462b751efa021d22e7847c">EVAL_AND_CHECK_TRUE__</a></div><div class="ttdeci">#define EVAL_AND_CHECK_TRUE__(func_name, expr)</div><div class="ttdef"><b>Definition</b> drogon_test.h:443</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a6c1cf3811206fc694cbba31364b61d87" name="a6c1cf3811206fc694cbba31364b61d87"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6c1cf3811206fc694cbba31364b61d87">&#9670;&#160;</a></span>CHECK_NOTHROW</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CHECK_NOTHROW</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">expr</td><td>)</td>
          <td>&#160;&#160;&#160;    <a class="el" href="drogon__test_8h.html#af4e6d8372d21119e608934ddacde39fd">CHECK_NOTHROW_INTERNAL__</a>(expr, &quot;CHECK_NOTHROW&quot;, <a class="el" href="drogon__test_8h.html#a6d63c9607d028296e8027e71680c3d56">NOTHING__</a>)</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="af4e6d8372d21119e608934ddacde39fd" name="af4e6d8372d21119e608934ddacde39fd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af4e6d8372d21119e608934ddacde39fd">&#9670;&#160;</a></span>CHECK_NOTHROW_INTERNAL__</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CHECK_NOTHROW_INTERNAL__</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">expr, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">func_name, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">on_leave&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>值:</b><div class="fragment"><div class="line">    <span class="keywordflow">do</span>                                                                  \</div>
<div class="line">    {                                                                   \</div>
<div class="line">        TEST_INTERNAL__(func_name,                                      \</div>
<div class="line">                        expr,                                           \</div>
<div class="line">                        <a class="code hl_define" href="drogon__test_8h.html#a358075fc4fab47d0e2467906be0d04f7">EVAL__</a>(expr) <a class="code hl_define" href="drogon__test_8h.html#a6f606b533ca7d67311ffcfcba098acc6">SET_TEST_SUCCESS__</a>,                \</div>
<div class="line">                        <a class="code hl_define" href="drogon__test_8h.html#a6d63c9607d028296e8027e71680c3d56">NOTHING__</a>,                                      \</div>
<div class="line">                        <a class="code hl_define" href="drogon__test_8h.html#a6d63c9607d028296e8027e71680c3d56">NOTHING__</a>,                                      \</div>
<div class="line">                        <a class="code hl_define" href="drogon__test_8h.html#a834beef0fff8b144b21d8cd924782f65">PRINT_ERR_WITHEXCEPTION__</a>(#expr, func_name)     \</div>
<div class="line">                            on_leave <a class="code hl_define" href="drogon__test_8h.html#a1de12ccd156b35be5471ec0952670e44">PRINT_PASSED__</a>(func_name, #expr)); \</div>
<div class="line">    } <span class="keywordflow">while</span> (0)</div>
<div class="ttc" id="adrogon__test_8h_html_a358075fc4fab47d0e2467906be0d04f7"><div class="ttname"><a href="drogon__test_8h.html#a358075fc4fab47d0e2467906be0d04f7">EVAL__</a></div><div class="ttdeci">#define EVAL__(expr)</div><div class="ttdef"><b>Definition</b> drogon_test.h:513</div></div>
<div class="ttc" id="adrogon__test_8h_html_a6d63c9607d028296e8027e71680c3d56"><div class="ttname"><a href="drogon__test_8h.html#a6d63c9607d028296e8027e71680c3d56">NOTHING__</a></div><div class="ttdeci">#define NOTHING__</div><div class="ttdef"><b>Definition</b> drogon_test.h:519</div></div>
<div class="ttc" id="adrogon__test_8h_html_a6f606b533ca7d67311ffcfcba098acc6"><div class="ttname"><a href="drogon__test_8h.html#a6f606b533ca7d67311ffcfcba098acc6">SET_TEST_SUCCESS__</a></div><div class="ttdeci">#define SET_TEST_SUCCESS__</div><div class="ttdef"><b>Definition</b> drogon_test.h:405</div></div>
<div class="ttc" id="adrogon__test_8h_html_a834beef0fff8b144b21d8cd924782f65"><div class="ttname"><a href="drogon__test_8h.html#a834beef0fff8b144b21d8cd924782f65">PRINT_ERR_WITHEXCEPTION__</a></div><div class="ttdeci">#define PRINT_ERR_WITHEXCEPTION__(expr, func_name)</div><div class="ttdef"><b>Definition</b> drogon_test.h:533</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ab35bfeeeae3c3cb223f550f1d6e9a396" name="ab35bfeeeae3c3cb223f550f1d6e9a396"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab35bfeeeae3c3cb223f550f1d6e9a396">&#9670;&#160;</a></span>CHECK_THROWS</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CHECK_THROWS</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">expr</td><td>)</td>
          <td>&#160;&#160;&#160;    <a class="el" href="drogon__test_8h.html#ac131f592112f38e43d8db864e0cc9e61">CHECK_THROWS_INTERNAL__</a>(expr, &quot;CHECK_THROWS&quot;, <a class="el" href="drogon__test_8h.html#a6d63c9607d028296e8027e71680c3d56">NOTHING__</a>)</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ae6fcf08f59f69522d952443daf7293b2" name="ae6fcf08f59f69522d952443daf7293b2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae6fcf08f59f69522d952443daf7293b2">&#9670;&#160;</a></span>CHECK_THROWS_AS</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CHECK_THROWS_AS</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">expr, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">except_type&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;    <a class="el" href="drogon__test_8h.html#a8d396ce4ed11cfa83862455d6ed3bad8">CHECK_THROWS_AS_INTERNAL__</a>(expr, &quot;CHECK_THROWS_AS&quot;, except_type, <a class="el" href="drogon__test_8h.html#a6d63c9607d028296e8027e71680c3d56">NOTHING__</a>)</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a8d396ce4ed11cfa83862455d6ed3bad8" name="a8d396ce4ed11cfa83862455d6ed3bad8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8d396ce4ed11cfa83862455d6ed3bad8">&#9670;&#160;</a></span>CHECK_THROWS_AS_INTERNAL__</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CHECK_THROWS_AS_INTERNAL__</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">expr, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">func_name, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">except_type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">on_leave&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>值:</b><div class="fragment"><div class="line">    <span class="keywordflow">do</span>                                                                        \</div>
<div class="line">    {                                                                         \</div>
<div class="line">        <span class="keywordtype">bool</span> exceptionThrown = <span class="keyword">false</span>;                                         \</div>
<div class="line">        TEST_INTERNAL__(                                                      \</div>
<div class="line">            func_name,                                                        \</div>
<div class="line">            expr,                                                             \</div>
<div class="line">            <a class="code hl_define" href="drogon__test_8h.html#a358075fc4fab47d0e2467906be0d04f7">EVAL__</a>(expr),                                                     \</div>
<div class="line">            {                                                                 \</div>
<div class="line">                exceptionThrown = <span class="keyword">true</span>;                                       \</div>
<div class="line">                if (<span class="keyword">dynamic_cast&lt;</span><span class="keyword">const </span>except_type *<span class="keyword">&gt;</span>(&amp;e) != <span class="keyword">nullptr</span>)         \</div>
<div class="line">                    <a class="code hl_define" href="drogon__test_8h.html#a6f606b533ca7d67311ffcfcba098acc6">SET_TEST_SUCCESS__</a>;                                       \</div>
<div class="line">            },                                                                \</div>
<div class="line">            { exceptionThrown = <span class="keyword">true</span>; },                                      \</div>
<div class="line">            PRINT_ERR_BAD_EXCEPTION__(#expr <span class="stringliteral">&quot;, &quot;</span> #except_type,                \</div>
<div class="line">                                      func_name,                              \</div>
<div class="line">                                      except_type,                            \</div>
<div class="line">                                      exceptionThrown,                        \</div>
<div class="line">                                      <a class="code hl_define" href="drogon__test_8h.html#a66af2211d459d1f12ec6a2e813ddc34d">TEST_FLAG_</a>)                             \</div>
<div class="line">                on_leave <a class="code hl_define" href="drogon__test_8h.html#a1de12ccd156b35be5471ec0952670e44">PRINT_PASSED__</a>(func_name, #expr <span class="stringliteral">&quot;, &quot;</span> #except_type)); \</div>
<div class="line">    } <span class="keywordflow">while</span> (0)</div>
<div class="ttc" id="adrogon__test_8h_html_a66af2211d459d1f12ec6a2e813ddc34d"><div class="ttname"><a href="drogon__test_8h.html#a66af2211d459d1f12ec6a2e813ddc34d">TEST_FLAG_</a></div><div class="ttdeci">#define TEST_FLAG_</div><div class="ttdef"><b>Definition</b> drogon_test.h:25</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ac131f592112f38e43d8db864e0cc9e61" name="ac131f592112f38e43d8db864e0cc9e61"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac131f592112f38e43d8db864e0cc9e61">&#9670;&#160;</a></span>CHECK_THROWS_INTERNAL__</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CHECK_THROWS_INTERNAL__</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">expr, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">func_name, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">on_leave&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>值:</b><div class="fragment"><div class="line">    <span class="keywordflow">do</span>                                                                  \</div>
<div class="line">    {                                                                   \</div>
<div class="line">        TEST_INTERNAL__(func_name,                                      \</div>
<div class="line">                        expr,                                           \</div>
<div class="line">                        <a class="code hl_define" href="drogon__test_8h.html#a358075fc4fab47d0e2467906be0d04f7">EVAL__</a>(expr),                                   \</div>
<div class="line">                        <a class="code hl_define" href="drogon__test_8h.html#a6f606b533ca7d67311ffcfcba098acc6">SET_TEST_SUCCESS__</a>,                             \</div>
<div class="line">                        <a class="code hl_define" href="drogon__test_8h.html#a6f606b533ca7d67311ffcfcba098acc6">SET_TEST_SUCCESS__</a>,                             \</div>
<div class="line">                        <a class="code hl_define" href="drogon__test_8h.html#a1ec91a78685d26783ff7e6fbe0a50014">PRINT_ERR_NOEXCEPTION__</a>(#expr, func_name)       \</div>
<div class="line">                            on_leave <a class="code hl_define" href="drogon__test_8h.html#a1de12ccd156b35be5471ec0952670e44">PRINT_PASSED__</a>(func_name, #expr)); \</div>
<div class="line">    } <span class="keywordflow">while</span> (0)</div>
<div class="ttc" id="adrogon__test_8h_html_a1ec91a78685d26783ff7e6fbe0a50014"><div class="ttname"><a href="drogon__test_8h.html#a1ec91a78685d26783ff7e6fbe0a50014">PRINT_ERR_NOEXCEPTION__</a></div><div class="ttdeci">#define PRINT_ERR_NOEXCEPTION__(expr, func_name)</div><div class="ttdef"><b>Definition</b> drogon_test.h:523</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ae747547fe1548ac7c0cae3053db37439" name="ae747547fe1548ac7c0cae3053db37439"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae747547fe1548ac7c0cae3053db37439">&#9670;&#160;</a></span>CO_REQUIRE</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CO_REQUIRE</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">expr</td><td>)</td>
          <td>&#160;&#160;&#160;    <a class="el" href="drogon__test_8h.html#aae1f8ff3bdae214b7c4b5f8c6337d681">CHECK_INTERNAL__</a>(expr, &quot;CO_REQUIRE&quot;, <a class="el" href="drogon__test_8h.html#abdb1bd68fa2b06fc270d82189117c1b1">CO_RETURN_ON_FAILURE__</a>)</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="aa3c2d3a87526926e2f027f25c1bc5902" name="aa3c2d3a87526926e2f027f25c1bc5902"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa3c2d3a87526926e2f027f25c1bc5902">&#9670;&#160;</a></span>CO_REQUIRE_NOTHROW</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CO_REQUIRE_NOTHROW</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">expr</td><td>)</td>
          <td>&#160;&#160;&#160;    <a class="el" href="drogon__test_8h.html#af4e6d8372d21119e608934ddacde39fd">CHECK_NOTHROW_INTERNAL__</a>(expr, &quot;CO_REQUIRE_NOTHROW&quot;, <a class="el" href="drogon__test_8h.html#abdb1bd68fa2b06fc270d82189117c1b1">CO_RETURN_ON_FAILURE__</a>)</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a97ade960748baeb15dc1bacd109127c7" name="a97ade960748baeb15dc1bacd109127c7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a97ade960748baeb15dc1bacd109127c7">&#9670;&#160;</a></span>CO_REQUIRE_THROWS</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CO_REQUIRE_THROWS</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">expr</td><td>)</td>
          <td>&#160;&#160;&#160;    <a class="el" href="drogon__test_8h.html#ac131f592112f38e43d8db864e0cc9e61">CHECK_THROWS_INTERNAL__</a>(expr, &quot;CO_REQUIRE_THROWS&quot;, <a class="el" href="drogon__test_8h.html#abdb1bd68fa2b06fc270d82189117c1b1">CO_RETURN_ON_FAILURE__</a>)</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a62cf2e225a81c372ace8dd3ec0648287" name="a62cf2e225a81c372ace8dd3ec0648287"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a62cf2e225a81c372ace8dd3ec0648287">&#9670;&#160;</a></span>CO_REQUIRE_THROWS_AS</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CO_REQUIRE_THROWS_AS</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">expr, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">except_type&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>值:</b><div class="fragment"><div class="line">    <a class="code hl_define" href="drogon__test_8h.html#a8d396ce4ed11cfa83862455d6ed3bad8">CHECK_THROWS_AS_INTERNAL__</a>(expr,                   \</div>
<div class="line">                               <span class="stringliteral">&quot;CO_REQUIRE_THROWS_AS&quot;</span>, \</div>
<div class="line">                               except_type,            \</div>
<div class="line">                               <a class="code hl_define" href="drogon__test_8h.html#abdb1bd68fa2b06fc270d82189117c1b1">CO_RETURN_ON_FAILURE__</a>)</div>
<div class="ttc" id="adrogon__test_8h_html_a8d396ce4ed11cfa83862455d6ed3bad8"><div class="ttname"><a href="drogon__test_8h.html#a8d396ce4ed11cfa83862455d6ed3bad8">CHECK_THROWS_AS_INTERNAL__</a></div><div class="ttdeci">#define CHECK_THROWS_AS_INTERNAL__(expr, func_name, except_type, on_leave)</div><div class="ttdef"><b>Definition</b> drogon_test.h:588</div></div>
<div class="ttc" id="adrogon__test_8h_html_abdb1bd68fa2b06fc270d82189117c1b1"><div class="ttname"><a href="drogon__test_8h.html#abdb1bd68fa2b06fc270d82189117c1b1">CO_RETURN_ON_FAILURE__</a></div><div class="ttdeci">#define CO_RETURN_ON_FAILURE__</div><div class="ttdef"><b>Definition</b> drogon_test.h:487</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="abdb1bd68fa2b06fc270d82189117c1b1" name="abdb1bd68fa2b06fc270d82189117c1b1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abdb1bd68fa2b06fc270d82189117c1b1">&#9670;&#160;</a></span>CO_RETURN_ON_FAILURE__</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CO_RETURN_ON_FAILURE__</td>
        </tr>
      </table>
</div><div class="memdoc">
<b>值:</b><div class="fragment"><div class="line">    <span class="keywordflow">do</span>                         \</div>
<div class="line">    {                          \</div>
<div class="line">        if (!<a class="code hl_define" href="drogon__test_8h.html#a66af2211d459d1f12ec6a2e813ddc34d">TEST_FLAG_</a>)       \</div>
<div class="line">            <span class="keyword">co_return</span>;         \</div>
<div class="line">    } <span class="keywordflow">while</span> (0);</div>
</div><!-- fragment -->
</div>
</div>
<a id="a44264190433002cd216d1482e0eec6f0" name="a44264190433002cd216d1482e0eec6f0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a44264190433002cd216d1482e0eec6f0">&#9670;&#160;</a></span>DIE_ON_FAILURE__</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define DIE_ON_FAILURE__</td>
        </tr>
      </table>
</div><div class="memdoc">
<b>值:</b><div class="fragment"><div class="line">    <span class="keywordflow">do</span>                                                                  \</div>
<div class="line">    {                                                                   \</div>
<div class="line">        <span class="keyword">using namespace </span><a class="code hl_namespace" href="namespacedrogon_1_1test.html">drogon::test</a>;                                   \</div>
<div class="line">        if (!<a class="code hl_define" href="drogon__test_8h.html#a66af2211d459d1f12ec6a2e813ddc34d">TEST_FLAG_</a>)                                                \</div>
<div class="line">        {                                                               \</div>
<div class="line">            printTestStats();                                           \</div>
<div class="line">            printErr() &lt;&lt; <span class="stringliteral">&quot;Force exiting due to a mandation failed.\n&quot;</span>; \</div>
<div class="line">            exit(1);                                                    \</div>
<div class="line">        }                                                               \</div>
<div class="line">    } <span class="keywordflow">while</span> (0);</div>
<div class="ttc" id="anamespacedrogon_1_1test_html"><div class="ttname"><a href="namespacedrogon_1_1test.html">drogon::test</a></div><div class="ttdef"><b>Definition</b> drogon_test.h:21</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a78fb6ad8452a23ec86b5131399e3e13e" name="a78fb6ad8452a23ec86b5131399e3e13e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a78fb6ad8452a23ec86b5131399e3e13e">&#9670;&#160;</a></span>DROGON_TEST</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define DROGON_TEST</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">test_name</td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>值:</b><div class="fragment"><div class="line">    <span class="keyword">struct </span>DROGON_TEST_CLASS_NAME_(test_name)                              \</div>
<div class="line">        : <span class="keyword">public</span> <a class="code hl_class" href="classdrogon_1_1DrObject.html">drogon::DrObject</a>&lt;DROGON_TEST_CLASS_NAME_(test_name)&gt;,     \</div>
<div class="line">          <span class="keyword">public</span> <a class="code hl_struct" href="structdrogon_1_1test_1_1TestCase.html">drogon::test::TestCase</a>                                    \</div>
<div class="line">    {                                                                      \</div>
<div class="line">        DROGON_TEST_CLASS_NAME_(test_name)                                 \</div>
<div class="line">        () : <a class="code hl_namespace" href="namespacedrogon.html">drogon</a>::test::TestCase(#test_name)                            \</div>
<div class="line">        {                                                                  \</div>
<div class="line">        }                                                                  \</div>
<div class="line">        <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code hl_function" href="structdrogon_1_1test_1_1TestCase.html#ae3c54af929b5c1cc164ee4f611727b0f">doTest_</a>(std::shared_ptr&lt;drogon::test::Case&gt;) <span class="keyword">override</span>; \</div>
<div class="line">    };                                                                     \</div>
<div class="line">    <span class="keywordtype">void</span> <a class="code hl_define" href="drogon__test_8h.html#aa26b550f6ab03fc64b57cc3c8fdfe350">DROGON_TEST_CLASS_NAME_</a>(test_name)::doTest_(                      \</div>
<div class="line">        std::shared_ptr&lt;<a class="code hl_namespace" href="namespacedrogon.html">drogon</a>::test::Case&gt; <a class="code hl_define" href="drogon__test_8h.html#a95c9a8f6f2c4e521f63f390f50c3b9ee">TEST_CTX</a>)</div>
<div class="ttc" id="aclassdrogon_1_1DrObject_html"><div class="ttname"><a href="classdrogon_1_1DrObject.html">drogon::DrObject</a></div><div class="ttdef"><b>Definition</b> DrObject.h:86</div></div>
<div class="ttc" id="adrogon__test_8h_html_a95c9a8f6f2c4e521f63f390f50c3b9ee"><div class="ttname"><a href="drogon__test_8h.html#a95c9a8f6f2c4e521f63f390f50c3b9ee">TEST_CTX</a></div><div class="ttdeci">#define TEST_CTX</div><div class="ttdef"><b>Definition</b> drogon_test.h:22</div></div>
<div class="ttc" id="adrogon__test_8h_html_aa26b550f6ab03fc64b57cc3c8fdfe350"><div class="ttname"><a href="drogon__test_8h.html#aa26b550f6ab03fc64b57cc3c8fdfe350">DROGON_TEST_CLASS_NAME_</a></div><div class="ttdeci">#define DROGON_TEST_CLASS_NAME_(test_name)</div><div class="ttdef"><b>Definition</b> drogon_test.h:717</div></div>
<div class="ttc" id="anamespacedrogon_html"><div class="ttname"><a href="namespacedrogon.html">drogon</a></div><div class="ttdoc">Drogon Test is a minimal effort test framework developed because the major C++ test frameworks doesn'...</div><div class="ttdef"><b>Definition</b> Attribute.h:23</div></div>
<div class="ttc" id="astructdrogon_1_1test_1_1TestCase_html"><div class="ttname"><a href="structdrogon_1_1test_1_1TestCase.html">drogon::test::TestCase</a></div><div class="ttdef"><b>Definition</b> drogon_test.h:373</div></div>
<div class="ttc" id="astructdrogon_1_1test_1_1TestCase_html_ae3c54af929b5c1cc164ee4f611727b0f"><div class="ttname"><a href="structdrogon_1_1test_1_1TestCase.html#ae3c54af929b5c1cc164ee4f611727b0f">drogon::test::TestCase::doTest_</a></div><div class="ttdeci">virtual void doTest_(std::shared_ptr&lt; Case &gt;)=0</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aa26b550f6ab03fc64b57cc3c8fdfe350" name="aa26b550f6ab03fc64b57cc3c8fdfe350"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa26b550f6ab03fc64b57cc3c8fdfe350">&#9670;&#160;</a></span>DROGON_TEST_CLASS_NAME_</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define DROGON_TEST_CLASS_NAME_</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">test_name</td><td>)</td>
          <td>&#160;&#160;&#160;    <a class="el" href="drogon__test_8h.html#afa7bcd74b5a0e95472f6ba17b782355f">DROGON_TEST_CONCAT</a>(<a class="el" href="drogon__test_8h.html#a1b8fe4d750d703a36d80ce9a02a8b24c">DROGON_TESTCASE_PREIX_</a>, test_name)</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="afa7bcd74b5a0e95472f6ba17b782355f" name="afa7bcd74b5a0e95472f6ba17b782355f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afa7bcd74b5a0e95472f6ba17b782355f">&#9670;&#160;</a></span>DROGON_TEST_CONCAT</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define DROGON_TEST_CONCAT</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">a, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">b&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;<a class="el" href="drogon__test_8h.html#ab49c8deb5e5e539b2ee4202622be3e23">DROGON_TEST_CONCAT__</a>(a, b)</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ab49c8deb5e5e539b2ee4202622be3e23" name="ab49c8deb5e5e539b2ee4202622be3e23"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab49c8deb5e5e539b2ee4202622be3e23">&#9670;&#160;</a></span>DROGON_TEST_CONCAT__</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define DROGON_TEST_CONCAT__</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">a, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">b&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;a##b</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a400fec7ce530a1b405d9e828f7affa71" name="a400fec7ce530a1b405d9e828f7affa71"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a400fec7ce530a1b405d9e828f7affa71">&#9670;&#160;</a></span>DROGON_TEST_END_SUPRESSION_</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define DROGON_TEST_END_SUPRESSION_</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a9325970d73c44903fc8c2d68fe7cb218" name="a9325970d73c44903fc8c2d68fe7cb218"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9325970d73c44903fc8c2d68fe7cb218">&#9670;&#160;</a></span>DROGON_TEST_START_SUPRESSION_</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define DROGON_TEST_START_SUPRESSION_</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ad8ed8825840e6b27454a5ceb375dcff6" name="ad8ed8825840e6b27454a5ceb375dcff6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad8ed8825840e6b27454a5ceb375dcff6">&#9670;&#160;</a></span>DROGON_TEST_STRINGIFY</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define DROGON_TEST_STRINGIFY</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">x</td><td>)</td>
          <td>&#160;&#160;&#160;<a class="el" href="drogon__test_8h.html#a75003e94faec1650a1c6916a8fd13c97">DROGON_TEST_STRINGIFY__</a>(x)</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a75003e94faec1650a1c6916a8fd13c97" name="a75003e94faec1650a1c6916a8fd13c97"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a75003e94faec1650a1c6916a8fd13c97">&#9670;&#160;</a></span>DROGON_TEST_STRINGIFY__</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define DROGON_TEST_STRINGIFY__</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">x</td><td>)</td>
          <td>&#160;&#160;&#160;#x</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a7910364e292cf15d9df6cebe1dadd329" name="a7910364e292cf15d9df6cebe1dadd329"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7910364e292cf15d9df6cebe1dadd329">&#9670;&#160;</a></span>DROGON_TEST_SUPPRESS_PARENTHESES_WARNING_</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define DROGON_TEST_SUPPRESS_PARENTHESES_WARNING_</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a29855c1c444b688e9d4941b70dea778e" name="a29855c1c444b688e9d4941b70dea778e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a29855c1c444b688e9d4941b70dea778e">&#9670;&#160;</a></span>DROGON_TEST_SUPPRESS_UNUSED_VALUE_WARNING_</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define DROGON_TEST_SUPPRESS_UNUSED_VALUE_WARNING_</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a1b8fe4d750d703a36d80ce9a02a8b24c" name="a1b8fe4d750d703a36d80ce9a02a8b24c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1b8fe4d750d703a36d80ce9a02a8b24c">&#9670;&#160;</a></span>DROGON_TESTCASE_PREIX_</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define DROGON_TESTCASE_PREIX_&#160;&#160;&#160;drtest__</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ad44a5a908b69d7be334b03975283b1de" name="ad44a5a908b69d7be334b03975283b1de"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad44a5a908b69d7be334b03975283b1de">&#9670;&#160;</a></span>DROGON_TESTCASE_PREIX_STR_</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define DROGON_TESTCASE_PREIX_STR_&#160;&#160;&#160;&quot;drtest__&quot;</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a0d79efc776972dda4f6c2d58beb86e0d" name="a0d79efc776972dda4f6c2d58beb86e0d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0d79efc776972dda4f6c2d58beb86e0d">&#9670;&#160;</a></span>ERROR_MSG</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ERROR_MSG</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">func_name, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">expr&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>值:</b><div class="fragment"><div class="line">    <a class="code hl_function" href="namespacedrogon_1_1test.html#abd86acf1acb0b30934b7e57e7a6b22ad">drogon::test::printErr</a>()                                          \</div>
<div class="line">        &lt;&lt; <span class="stringliteral">&quot;\x1B[1;37mIn test case &quot;</span> &lt;&lt; <a class="code hl_define" href="drogon__test_8h.html#a95c9a8f6f2c4e521f63f390f50c3b9ee">TEST_CTX</a>-&gt;fullname() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>  \</div>
<div class="line">        &lt;&lt; <span class="stringliteral">&quot;\x1B[0;37m↳ &quot;</span> &lt;&lt; __FILE__ &lt;&lt; <span class="stringliteral">&quot;:&quot;</span> &lt;&lt; __LINE__              \</div>
<div class="line">        &lt;&lt; <span class="stringliteral">&quot; \x1B[0;31m FAILED:\x1B[0m\n&quot;</span>                             \</div>
<div class="line">        &lt;&lt; <span class="stringliteral">&quot;  \033[0;34m&quot;</span>                                             \</div>
<div class="line">        &lt;&lt; <a class="code hl_function" href="namespacedrogon_1_1test_1_1internal.html#a02febbd44548abc6efe2fba930a79fd3">drogon::test::internal::stringifyFuncCall</a>(func_name, expr) \</div>
<div class="line">        &lt;&lt; <span class="stringliteral">&quot;\x1B[0m\n&quot;</span></div>
<div class="ttc" id="anamespacedrogon_1_1test_1_1internal_html_a02febbd44548abc6efe2fba930a79fd3"><div class="ttname"><a href="namespacedrogon_1_1test_1_1internal.html#a02febbd44548abc6efe2fba930a79fd3">drogon::test::internal::stringifyFuncCall</a></div><div class="ttdeci">std::string stringifyFuncCall(const std::string &amp;funcName)</div><div class="ttdef"><b>Definition</b> drogon_test.h:135</div></div>
<div class="ttc" id="anamespacedrogon_1_1test_html_abd86acf1acb0b30934b7e57e7a6b22ad"><div class="ttname"><a href="namespacedrogon_1_1test.html#abd86acf1acb0b30934b7e57e7a6b22ad">drogon::test::printErr</a></div><div class="ttdeci">DROGON_EXPORT ThreadSafeStream printErr()</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a358075fc4fab47d0e2467906be0d04f7" name="a358075fc4fab47d0e2467906be0d04f7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a358075fc4fab47d0e2467906be0d04f7">&#9670;&#160;</a></span>EVAL__</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define EVAL__</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">expr</td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>值:</b><div class="fragment"><div class="line">    <span class="keywordflow">do</span>               \</div>
<div class="line">    {                \</div>
<div class="line">        expr;        \</div>
<div class="line">    } <span class="keywordflow">while</span> (0);</div>
</div><!-- fragment -->
</div>
</div>
<a id="adf4ddef47e462b751efa021d22e7847c" name="adf4ddef47e462b751efa021d22e7847c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adf4ddef47e462b751efa021d22e7847c">&#9670;&#160;</a></span>EVAL_AND_CHECK_TRUE__</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define EVAL_AND_CHECK_TRUE__</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">func_name, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">expr&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>值:</b><div class="fragment"><div class="line">    <span class="keywordflow">do</span>                                                               \</div>
<div class="line">    {                                                                \</div>
<div class="line">        <span class="keywordtype">bool</span> drresult__;                                             \</div>
<div class="line">        std::string drexpansion__;                                   \</div>
<div class="line">        DROGON_TEST_START_SUPRESSION_                                \</div>
<div class="line">        DROGON_TEST_SUPPRESS_PARENTHESES_WARNING_                    \</div>
<div class="line">        std::tie(drresult__, drexpansion__) =                        \</div>
<div class="line">            (<a class="code hl_struct" href="structdrogon_1_1test_1_1internal_1_1Decomposer.html">drogon::test::internal::Decomposer</a>() &lt;= expr).result(); \</div>
<div class="line">        DROGON_TEST_END_SUPRESSION_                                  \</div>
<div class="line">        if (!drresult__)                                             \</div>
<div class="line">        {                                                            \</div>
<div class="line">            ERROR_MSG(func_name, #expr)                              \</div>
<div class="line">                &lt;&lt; <span class="stringliteral">&quot;With expansion\n&quot;</span>                                \</div>
<div class="line">                &lt;&lt; <span class="stringliteral">&quot;  \033[0;33m&quot;</span> &lt;&lt; drexpansion__ &lt;&lt; <span class="stringliteral">&quot;\x1B[0m\n\n&quot;</span>; \</div>
<div class="line">        }                                                            \</div>
<div class="line">        else                                                         \</div>
<div class="line">            SET_TEST_SUCCESS__;                                      \</div>
<div class="line">    } <span class="keywordflow">while</span> (0);</div>
<div class="ttc" id="astructdrogon_1_1test_1_1internal_1_1Decomposer_html"><div class="ttname"><a href="structdrogon_1_1test_1_1internal_1_1Decomposer.html">drogon::test::internal::Decomposer</a></div><div class="ttdef"><b>Definition</b> drogon_test.h:261</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ac8d1eaf65528f86b445cf6e45b2d72c9" name="ac8d1eaf65528f86b445cf6e45b2d72c9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac8d1eaf65528f86b445cf6e45b2d72c9">&#9670;&#160;</a></span>FAIL</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define FAIL</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>...</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>值:</b><div class="fragment"><div class="line">    <span class="keywordflow">do</span>                                                                  \</div>
<div class="line">    {                                                                   \</div>
<div class="line">        <span class="keyword">using namespace </span><a class="code hl_namespace" href="namespacedrogon_1_1test.html">drogon::test</a>;                                   \</div>
<div class="line">        <a class="code hl_define" href="drogon__test_8h.html#a95c9a8f6f2c4e521f63f390f50c3b9ee">TEST_CTX</a>-&gt;setFailed();                                          \</div>
<div class="line">        printErr() &lt;&lt; <span class="stringliteral">&quot;\x1B[1;37mIn test case &quot;</span> &lt;&lt; <a class="code hl_define" href="drogon__test_8h.html#a95c9a8f6f2c4e521f63f390f50c3b9ee">TEST_CTX</a>-&gt;fullname() \</div>
<div class="line">                   &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>                                              \</div>
<div class="line">                   &lt;&lt; <span class="stringliteral">&quot;\x1B[0;37m&quot;</span> &lt;&lt; __FILE__ &lt;&lt; <span class="stringliteral">&quot;:&quot;</span> &lt;&lt; __LINE__       \</div>
<div class="line">                   &lt;&lt; <span class="stringliteral">&quot; \x1B[0;31m FAILED:\x1B[0m\n&quot;</span>                    \</div>
<div class="line">                   &lt;&lt; <span class="stringliteral">&quot;  Reason: &quot;</span>;                                     \</div>
<div class="line">        drogon::test::internal::outputReason(__VA_ARGS__);              \</div>
<div class="line">        printErr() &lt;&lt; <span class="stringliteral">&quot;\n\n&quot;</span>;                                           \</div>
<div class="line">        <a class="code hl_variable" href="namespacedrogon_1_1test_1_1internal.html#a61d93b38b33d498924ec06cfdc27971e">drogon::test::internal::numAssertions</a>++;                        \</div>
<div class="line">    } <span class="keywordflow">while</span> (0)</div>
<div class="ttc" id="anamespacedrogon_1_1test_1_1internal_html_a61d93b38b33d498924ec06cfdc27971e"><div class="ttname"><a href="namespacedrogon_1_1test_1_1internal.html#a61d93b38b33d498924ec06cfdc27971e">drogon::test::internal::numAssertions</a></div><div class="ttdeci">DROGON_EXPORT std::atomic&lt; size_t &gt; numAssertions</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a784f4eea033e29ab7c741e0f67002e2d" name="a784f4eea033e29ab7c741e0f67002e2d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a784f4eea033e29ab7c741e0f67002e2d">&#9670;&#160;</a></span>FAULT</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define FAULT</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>...</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>值:</b><div class="fragment"><div class="line">    <span class="keywordflow">do</span>                                                             \</div>
<div class="line">    {                                                              \</div>
<div class="line">        <span class="keyword">using namespace </span><a class="code hl_namespace" href="namespacedrogon_1_1test.html">drogon::test</a>;                              \</div>
<div class="line">        FAIL(__VA_ARGS__);                                         \</div>
<div class="line">        printTestStats();                                          \</div>
<div class="line">        printErr() &lt;&lt; <span class="stringliteral">&quot;Force exiting due to a FAULT statement.\n&quot;</span>; \</div>
<div class="line">        exit(1);                                                   \</div>
<div class="line">    } <span class="keywordflow">while</span> (0)</div>
</div><!-- fragment -->
</div>
</div>
<a id="a2646af79b23e5e7af073453911cd856e" name="a2646af79b23e5e7af073453911cd856e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2646af79b23e5e7af073453911cd856e">&#9670;&#160;</a></span>MANDATE</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MANDATE</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">expr</td><td>)</td>
          <td>&#160;&#160;&#160;<a class="el" href="drogon__test_8h.html#aae1f8ff3bdae214b7c4b5f8c6337d681">CHECK_INTERNAL__</a>(expr, &quot;MANDATE&quot;, <a class="el" href="drogon__test_8h.html#a44264190433002cd216d1482e0eec6f0">DIE_ON_FAILURE__</a>)</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ae07bf770b561d0686fe7bf10d025b19b" name="ae07bf770b561d0686fe7bf10d025b19b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae07bf770b561d0686fe7bf10d025b19b">&#9670;&#160;</a></span>MANDATE_NOTHROW</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MANDATE_NOTHROW</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">expr</td><td>)</td>
          <td>&#160;&#160;&#160;    <a class="el" href="drogon__test_8h.html#af4e6d8372d21119e608934ddacde39fd">CHECK_NOTHROW_INTERNAL__</a>(expr, &quot;MANDATE_NOTHROW&quot;, <a class="el" href="drogon__test_8h.html#a44264190433002cd216d1482e0eec6f0">DIE_ON_FAILURE__</a>)</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ab4d0a4b3a7cdb007f39535a58d09584b" name="ab4d0a4b3a7cdb007f39535a58d09584b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab4d0a4b3a7cdb007f39535a58d09584b">&#9670;&#160;</a></span>MANDATE_THROWS</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MANDATE_THROWS</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">expr</td><td>)</td>
          <td>&#160;&#160;&#160;    <a class="el" href="drogon__test_8h.html#ac131f592112f38e43d8db864e0cc9e61">CHECK_THROWS_INTERNAL__</a>(expr, &quot;MANDATE_THROWS&quot;, <a class="el" href="drogon__test_8h.html#a44264190433002cd216d1482e0eec6f0">DIE_ON_FAILURE__</a>)</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a07d57654f811e9f0329e55e895b66d45" name="a07d57654f811e9f0329e55e895b66d45"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a07d57654f811e9f0329e55e895b66d45">&#9670;&#160;</a></span>MANDATE_THROWS_AS</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MANDATE_THROWS_AS</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">expr, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">except_type&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>值:</b><div class="fragment"><div class="line">    <a class="code hl_define" href="drogon__test_8h.html#a8d396ce4ed11cfa83862455d6ed3bad8">CHECK_THROWS_AS_INTERNAL__</a>(expr,                \</div>
<div class="line">                               <span class="stringliteral">&quot;MANDATE_THROWS_AS&quot;</span>, \</div>
<div class="line">                               except_type,         \</div>
<div class="line">                               <a class="code hl_define" href="drogon__test_8h.html#a44264190433002cd216d1482e0eec6f0">DIE_ON_FAILURE__</a>)</div>
<div class="ttc" id="adrogon__test_8h_html_a44264190433002cd216d1482e0eec6f0"><div class="ttname"><a href="drogon__test_8h.html#a44264190433002cd216d1482e0eec6f0">DIE_ON_FAILURE__</a></div><div class="ttdeci">#define DIE_ON_FAILURE__</div><div class="ttdef"><b>Definition</b> drogon_test.h:494</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a6d63c9607d028296e8027e71680c3d56" name="a6d63c9607d028296e8027e71680c3d56"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6d63c9607d028296e8027e71680c3d56">&#9670;&#160;</a></span>NOTHING__</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define NOTHING__</td>
        </tr>
      </table>
</div><div class="memdoc">
<b>值:</b><div class="fragment"><div class="line">    {             \</div>
<div class="line">    }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a952682eef4ca541f7ae4067c44776c60" name="a952682eef4ca541f7ae4067c44776c60"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a952682eef4ca541f7ae4067c44776c60">&#9670;&#160;</a></span>PASSED_MSG</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define PASSED_MSG</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">func_name, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">expr&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>值:</b><div class="fragment"><div class="line">    <a class="code hl_function" href="namespacedrogon_1_1test.html#ac4adb49baa6224a9eb1ab4bdf19e2211">drogon::test::print</a>()                                             \</div>
<div class="line">        &lt;&lt; <span class="stringliteral">&quot;\x1B[1;37mIn test case &quot;</span> &lt;&lt; <a class="code hl_define" href="drogon__test_8h.html#a95c9a8f6f2c4e521f63f390f50c3b9ee">TEST_CTX</a>-&gt;fullname() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>  \</div>
<div class="line">        &lt;&lt; <span class="stringliteral">&quot;\x1B[0;37m↳ &quot;</span> &lt;&lt; __FILE__ &lt;&lt; <span class="stringliteral">&quot;:&quot;</span> &lt;&lt; __LINE__              \</div>
<div class="line">        &lt;&lt; <span class="stringliteral">&quot; \x1B[0;32m PASSED:\x1B[0m\n&quot;</span>                             \</div>
<div class="line">        &lt;&lt; <span class="stringliteral">&quot;  \033[0;34m&quot;</span>                                             \</div>
<div class="line">        &lt;&lt; <a class="code hl_function" href="namespacedrogon_1_1test_1_1internal.html#a02febbd44548abc6efe2fba930a79fd3">drogon::test::internal::stringifyFuncCall</a>(func_name, expr) \</div>
<div class="line">        &lt;&lt; <span class="stringliteral">&quot;\x1B[0m\n&quot;</span></div>
<div class="ttc" id="anamespacedrogon_1_1test_html_ac4adb49baa6224a9eb1ab4bdf19e2211"><div class="ttname"><a href="namespacedrogon_1_1test.html#ac4adb49baa6224a9eb1ab4bdf19e2211">drogon::test::print</a></div><div class="ttdeci">DROGON_EXPORT ThreadSafeStream print()</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ad1a17fb9850063ccf1a38aac7ac2b4de" name="ad1a17fb9850063ccf1a38aac7ac2b4de"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad1a17fb9850063ccf1a38aac7ac2b4de">&#9670;&#160;</a></span>PRINT_ERR_BAD_EXCEPTION__</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define PRINT_ERR_BAD_EXCEPTION__</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">expr, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">func_name, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">excep_type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">exceptionThrown, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">correctExceptionType&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>值:</b><div class="fragment"><div class="line">    <span class="keywordflow">do</span>                                                                         \</div>
<div class="line">    {                                                                          \</div>
<div class="line">        assert((exceptionThrown &amp;&amp; correctExceptionType) || !exceptionThrown); \</div>
<div class="line">        if (exceptionThrown == <span class="keyword">true</span> &amp;&amp; correctExceptionType == <span class="keyword">false</span>)          \</div>
<div class="line">        {                                                                      \</div>
<div class="line">            ERROR_MSG(func_name, expr)                                         \</div>
<div class="line">                &lt;&lt; <span class="stringliteral">&quot;With expecitation\n&quot;</span>                                       \</div>
<div class="line">                &lt;&lt; <span class="stringliteral">&quot;  Exception have been throw but not of type \033[0;33m&quot;</span>    \</div>
<div class="line">                &lt;&lt; #excep_type &lt;&lt; <span class="stringliteral">&quot;\033[0m.\n\n&quot;</span>;                              \</div>
<div class="line">        }                                                                      \</div>
<div class="line">        <span class="keywordflow">else</span> <span class="keywordflow">if</span> (exceptionThrown == <span class="keyword">false</span>)                                     \</div>
<div class="line">        {                                                                      \</div>
<div class="line">            ERROR_MSG(func_name, expr)                                         \</div>
<div class="line">                &lt;&lt; <span class="stringliteral">&quot;With expecitation\n&quot;</span>                                       \</div>
<div class="line">                &lt;&lt; <span class="stringliteral">&quot;  A \033[0;33m&quot;</span> &lt;&lt; #excep_type                             \</div>
<div class="line">                &lt;&lt; <span class="stringliteral">&quot;\033[0m exception is expected. But nothing was thrown&quot;</span>     \</div>
<div class="line">                &lt;&lt; <span class="stringliteral">&quot;\033[0m.\n\n&quot;</span>;                                             \</div>
<div class="line">        }                                                                      \</div>
<div class="line">    } <span class="keywordflow">while</span> (0);</div>
</div><!-- fragment -->
</div>
</div>
<a id="a1ec91a78685d26783ff7e6fbe0a50014" name="a1ec91a78685d26783ff7e6fbe0a50014"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1ec91a78685d26783ff7e6fbe0a50014">&#9670;&#160;</a></span>PRINT_ERR_NOEXCEPTION__</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define PRINT_ERR_NOEXCEPTION__</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">expr, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">func_name&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>值:</b><div class="fragment"><div class="line">    <span class="keywordflow">do</span>                                                               \</div>
<div class="line">    {                                                                \</div>
<div class="line">        if (!<a class="code hl_define" href="drogon__test_8h.html#a66af2211d459d1f12ec6a2e813ddc34d">TEST_FLAG_</a>)                                             \</div>
<div class="line">            ERROR_MSG(func_name, expr)                               \</div>
<div class="line">                &lt;&lt; <span class="stringliteral">&quot;With expecitation\n&quot;</span>                             \</div>
<div class="line">                &lt;&lt; <span class="stringliteral">&quot;  Expected to throw an exception. But none are &quot;</span> \</div>
<div class="line">                   <span class="stringliteral">&quot;thrown.\n\n&quot;</span>;                                    \</div>
<div class="line">    } <span class="keywordflow">while</span> (0);</div>
</div><!-- fragment -->
</div>
</div>
<a id="a834beef0fff8b144b21d8cd924782f65" name="a834beef0fff8b144b21d8cd924782f65"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a834beef0fff8b144b21d8cd924782f65">&#9670;&#160;</a></span>PRINT_ERR_WITHEXCEPTION__</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define PRINT_ERR_WITHEXCEPTION__</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">expr, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">func_name&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>值:</b><div class="fragment"><div class="line">    <span class="keywordflow">do</span>                                                               \</div>
<div class="line">    {                                                                \</div>
<div class="line">        if (!<a class="code hl_define" href="drogon__test_8h.html#a66af2211d459d1f12ec6a2e813ddc34d">TEST_FLAG_</a>)                                             \</div>
<div class="line">            ERROR_MSG(func_name, expr)                               \</div>
<div class="line">                &lt;&lt; <span class="stringliteral">&quot;With expecitation\n&quot;</span>                             \</div>
<div class="line">                &lt;&lt; <span class="stringliteral">&quot;  Should to not throw an exception. But one is &quot;</span> \</div>
<div class="line">                   <span class="stringliteral">&quot;thrown.\n\n&quot;</span>;                                    \</div>
<div class="line">    } <span class="keywordflow">while</span> (0);</div>
</div><!-- fragment -->
</div>
</div>
<a id="a4a30e396f74718f7cca424dd36a137b5" name="a4a30e396f74718f7cca424dd36a137b5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4a30e396f74718f7cca424dd36a137b5">&#9670;&#160;</a></span>PRINT_NONSTANDARD_EXCEPTION__</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define PRINT_NONSTANDARD_EXCEPTION__</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">func_name, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">expr&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>值:</b><div class="fragment"><div class="line">    <span class="keywordflow">do</span>                                                        \</div>
<div class="line">    {                                                         \</div>
<div class="line">        ERROR_MSG(func_name, expr)                            \</div>
<div class="line">            &lt;&lt; <span class="stringliteral">&quot;Unexpected unknown exception is thrown.\n\n&quot;</span>; \</div>
<div class="line">    } <span class="keywordflow">while</span> (0);</div>
</div><!-- fragment -->
</div>
</div>
<a id="a1de12ccd156b35be5471ec0952670e44" name="a1de12ccd156b35be5471ec0952670e44"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1de12ccd156b35be5471ec0952670e44">&#9670;&#160;</a></span>PRINT_PASSED__</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define PRINT_PASSED__</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">func_name, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">expr&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>值:</b><div class="fragment"><div class="line">    <span class="keywordflow">do</span>                                                                  \</div>
<div class="line">    {                                                                   \</div>
<div class="line">        if (<a class="code hl_variable" href="namespacedrogon_1_1test_1_1internal.html#a60d2fe96589bc00aab70cf75ea6f3c20">drogon::test::internal::printSuccessfulTests</a> &amp;&amp; <a class="code hl_define" href="drogon__test_8h.html#a66af2211d459d1f12ec6a2e813ddc34d">TEST_FLAG_</a>) \</div>
<div class="line">        {                                                               \</div>
<div class="line">            PASSED_MSG(func_name, expr) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;                        \</div>
<div class="line">        }                                                               \</div>
<div class="line">    } <span class="keywordflow">while</span> (0);</div>
<div class="ttc" id="anamespacedrogon_1_1test_1_1internal_html_a60d2fe96589bc00aab70cf75ea6f3c20"><div class="ttname"><a href="namespacedrogon_1_1test_1_1internal.html#a60d2fe96589bc00aab70cf75ea6f3c20">drogon::test::internal::printSuccessfulTests</a></div><div class="ttdeci">DROGON_EXPORT bool printSuccessfulTests</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ace0f2ddcefa078f52d1fec20d0f055e0" name="ace0f2ddcefa078f52d1fec20d0f055e0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ace0f2ddcefa078f52d1fec20d0f055e0">&#9670;&#160;</a></span>PRINT_UNEXPECTED_EXCEPTION__</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define PRINT_UNEXPECTED_EXCEPTION__</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">func_name, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">expr&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>值:</b><div class="fragment"><div class="line">    <span class="keywordflow">do</span>                                                        \</div>
<div class="line">    {                                                         \</div>
<div class="line">        ERROR_MSG(func_name, expr)                            \</div>
<div class="line">            &lt;&lt; <span class="stringliteral">&quot;An unexpected exception is thrown. what():\n&quot;</span> \</div>
<div class="line">            &lt;&lt; <span class="stringliteral">&quot;  \033[0;33m&quot;</span> &lt;&lt; e.what() &lt;&lt; <span class="stringliteral">&quot;\x1B[0m\n\n&quot;</span>;   \</div>
<div class="line">    } <span class="keywordflow">while</span> (0);</div>
</div><!-- fragment -->
</div>
</div>
<a id="ad9f2db71e103991db7d6f001a955285f" name="ad9f2db71e103991db7d6f001a955285f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad9f2db71e103991db7d6f001a955285f">&#9670;&#160;</a></span>REQUIRE</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define REQUIRE</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">expr</td><td>)</td>
          <td>&#160;&#160;&#160;<a class="el" href="drogon__test_8h.html#aae1f8ff3bdae214b7c4b5f8c6337d681">CHECK_INTERNAL__</a>(expr, &quot;REQUIRE&quot;, <a class="el" href="drogon__test_8h.html#ad4a46c6b462d9fc5e11269f2bfb1fba0">RETURN_ON_FAILURE__</a>)</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="aaf314e5b53e024051ea5d0a9eb6d75a9" name="aaf314e5b53e024051ea5d0a9eb6d75a9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaf314e5b53e024051ea5d0a9eb6d75a9">&#9670;&#160;</a></span>REQUIRE_NOTHROW</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define REQUIRE_NOTHROW</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">expr</td><td>)</td>
          <td>&#160;&#160;&#160;    <a class="el" href="drogon__test_8h.html#af4e6d8372d21119e608934ddacde39fd">CHECK_NOTHROW_INTERNAL__</a>(expr, &quot;REQUIRE_NOTHROW&quot;, <a class="el" href="drogon__test_8h.html#ad4a46c6b462d9fc5e11269f2bfb1fba0">RETURN_ON_FAILURE__</a>)</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a7d8d2d630f08ecda4a8ddf20d011814f" name="a7d8d2d630f08ecda4a8ddf20d011814f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7d8d2d630f08ecda4a8ddf20d011814f">&#9670;&#160;</a></span>REQUIRE_THROWS</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define REQUIRE_THROWS</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">expr</td><td>)</td>
          <td>&#160;&#160;&#160;    <a class="el" href="drogon__test_8h.html#ac131f592112f38e43d8db864e0cc9e61">CHECK_THROWS_INTERNAL__</a>(expr, &quot;REQUIRE_THROWS&quot;, <a class="el" href="drogon__test_8h.html#ad4a46c6b462d9fc5e11269f2bfb1fba0">RETURN_ON_FAILURE__</a>)</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="aa89edecfcb7595159a2bc668d905badb" name="aa89edecfcb7595159a2bc668d905badb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa89edecfcb7595159a2bc668d905badb">&#9670;&#160;</a></span>REQUIRE_THROWS_AS</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define REQUIRE_THROWS_AS</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">expr, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">except_type&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>值:</b><div class="fragment"><div class="line">    <a class="code hl_define" href="drogon__test_8h.html#a8d396ce4ed11cfa83862455d6ed3bad8">CHECK_THROWS_AS_INTERNAL__</a>(expr,                \</div>
<div class="line">                               <span class="stringliteral">&quot;REQUIRE_THROWS_AS&quot;</span>, \</div>
<div class="line">                               except_type,         \</div>
<div class="line">                               <a class="code hl_define" href="drogon__test_8h.html#ad4a46c6b462d9fc5e11269f2bfb1fba0">RETURN_ON_FAILURE__</a>)</div>
<div class="ttc" id="adrogon__test_8h_html_ad4a46c6b462d9fc5e11269f2bfb1fba0"><div class="ttname"><a href="drogon__test_8h.html#ad4a46c6b462d9fc5e11269f2bfb1fba0">RETURN_ON_FAILURE__</a></div><div class="ttdeci">#define RETURN_ON_FAILURE__</div><div class="ttdef"><b>Definition</b> drogon_test.h:480</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ad4a46c6b462d9fc5e11269f2bfb1fba0" name="ad4a46c6b462d9fc5e11269f2bfb1fba0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad4a46c6b462d9fc5e11269f2bfb1fba0">&#9670;&#160;</a></span>RETURN_ON_FAILURE__</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define RETURN_ON_FAILURE__</td>
        </tr>
      </table>
</div><div class="memdoc">
<b>值:</b><div class="fragment"><div class="line">    <span class="keywordflow">do</span>                      \</div>
<div class="line">    {                       \</div>
<div class="line">        if (!<a class="code hl_define" href="drogon__test_8h.html#a66af2211d459d1f12ec6a2e813ddc34d">TEST_FLAG_</a>)    \</div>
<div class="line">            <span class="keywordflow">return</span>;         \</div>
<div class="line">    } <span class="keywordflow">while</span> (0);</div>
</div><!-- fragment -->
</div>
</div>
<a id="a6f606b533ca7d67311ffcfcba098acc6" name="a6f606b533ca7d67311ffcfcba098acc6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6f606b533ca7d67311ffcfcba098acc6">&#9670;&#160;</a></span>SET_TEST_SUCCESS__</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SET_TEST_SUCCESS__</td>
        </tr>
      </table>
</div><div class="memdoc">
<b>值:</b><div class="fragment"><div class="line">    <span class="keywordflow">do</span>                     \</div>
<div class="line">    {                      \</div>
<div class="line">        <a class="code hl_define" href="drogon__test_8h.html#a66af2211d459d1f12ec6a2e813ddc34d">TEST_FLAG_</a> = <span class="keyword">true</span>; \</div>
<div class="line">    } <span class="keywordflow">while</span> (0);</div>
</div><!-- fragment -->
</div>
</div>
<a id="af71c2d932fb98d159c629b2a42fa90a1" name="af71c2d932fb98d159c629b2a42fa90a1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af71c2d932fb98d159c629b2a42fa90a1">&#9670;&#160;</a></span>STATIC_REQUIRE</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define STATIC_REQUIRE</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">expr</td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>值:</b><div class="fragment"><div class="line">    <span class="keywordflow">do</span>                                                  \</div>
<div class="line">    {                                                   \</div>
<div class="line">        DROGON_TEST_START_SUPRESSION_                   \</div>
<div class="line">        DROGON_TEST_SUPPRESS_UNUSED_VALUE_WARNING_      \</div>
<div class="line">        TEST_CTX;                                       \</div>
<div class="line">        DROGON_TEST_END_SUPRESSION_                     \</div>
<div class="line">        drogon::test::internal::numAssertions++;        \</div>
<div class="line">        static_assert((expr), #expr <span class="stringliteral">&quot; failed.&quot;</span>);        \</div>
<div class="line">        <a class="code hl_variable" href="namespacedrogon_1_1test_1_1internal.html#a6c0af84d8691b60f689c9a4c7de1bf9f">drogon::test::internal::numCorrectAssertions</a>++; \</div>
<div class="line">    } <span class="keywordflow">while</span> (0)</div>
<div class="ttc" id="anamespacedrogon_1_1test_1_1internal_html_a6c0af84d8691b60f689c9a4c7de1bf9f"><div class="ttname"><a href="namespacedrogon_1_1test_1_1internal.html#a6c0af84d8691b60f689c9a4c7de1bf9f">drogon::test::internal::numCorrectAssertions</a></div><div class="ttdeci">DROGON_EXPORT std::atomic&lt; size_t &gt; numCorrectAssertions</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a656912e38531d24851d379a52b10d077" name="a656912e38531d24851d379a52b10d077"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a656912e38531d24851d379a52b10d077">&#9670;&#160;</a></span>SUBSECTION</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SUBSECTION</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">name</td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>值:</b><div class="fragment"><div class="line">    <span class="keywordflow">for</span> (std::shared_ptr&lt;drogon::test::Case&gt; ctx_hold__ = <a class="code hl_define" href="drogon__test_8h.html#a95c9a8f6f2c4e521f63f390f50c3b9ee">TEST_CTX</a>,      \</div>
<div class="line">                                             ctx_tmp__ = <a class="code hl_define" href="drogon__test_8h.html#ace7dfafe1668385831aee545bdfe8401">SUBTEST</a>(#name); \</div>
<div class="line">         ctx_tmp__ != <span class="keyword">nullptr</span>;                                           \</div>
<div class="line">         <a class="code hl_define" href="drogon__test_8h.html#a95c9a8f6f2c4e521f63f390f50c3b9ee">TEST_CTX</a> = ctx_hold__, ctx_tmp__ = <span class="keyword">nullptr</span>)                     \</div>
<div class="line">        <span class="keywordflow">if</span> (<a class="code hl_define" href="drogon__test_8h.html#a95c9a8f6f2c4e521f63f390f50c3b9ee">TEST_CTX</a> = ctx_tmp__, <a class="code hl_define" href="drogon__test_8h.html#a95c9a8f6f2c4e521f63f390f50c3b9ee">TEST_CTX</a> != <span class="keyword">nullptr</span>)</div>
<div class="ttc" id="adrogon__test_8h_html_ace7dfafe1668385831aee545bdfe8401"><div class="ttname"><a href="drogon__test_8h.html#ace7dfafe1668385831aee545bdfe8401">SUBTEST</a></div><div class="ttdeci">#define SUBTEST(name)</div><div class="ttdef"><b>Definition</b> drogon_test.h:733</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ace7dfafe1668385831aee545bdfe8401" name="ace7dfafe1668385831aee545bdfe8401"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ace7dfafe1668385831aee545bdfe8401">&#9670;&#160;</a></span>SUBTEST</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SUBTEST</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">name</td><td>)</td>
          <td>&#160;&#160;&#160;(std::make_shared&lt;<a class="el" href="classdrogon_1_1test_1_1Case.html">drogon::test::Case</a>&gt;(<a class="el" href="drogon__test_8h.html#a95c9a8f6f2c4e521f63f390f50c3b9ee">TEST_CTX</a>, name))</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a9ef5057c6ed94ca63a4d23e3276b6f2b" name="a9ef5057c6ed94ca63a4d23e3276b6f2b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9ef5057c6ed94ca63a4d23e3276b6f2b">&#9670;&#160;</a></span>SUCCESS</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SUCCESS</td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>值:</b><div class="fragment"><div class="line">    <span class="keywordflow">do</span>                                                                       \</div>
<div class="line">    {                                                                        \</div>
<div class="line">        DROGON_TEST_START_SUPRESSION_                                        \</div>
<div class="line">        DROGON_TEST_SUPPRESS_UNUSED_VALUE_WARNING_                           \</div>
<div class="line">        TEST_CTX;                                                            \</div>
<div class="line">        DROGON_TEST_END_SUPRESSION_                                          \</div>
<div class="line">        if (<a class="code hl_variable" href="namespacedrogon_1_1test_1_1internal.html#a60d2fe96589bc00aab70cf75ea6f3c20">drogon::test::internal::printSuccessfulTests</a>)                    \</div>
<div class="line">            drogon::test::print()                                            \</div>
<div class="line">                &lt;&lt; <span class="stringliteral">&quot;\x1B[1;37mIn test case &quot;</span> &lt;&lt; <a class="code hl_define" href="drogon__test_8h.html#a95c9a8f6f2c4e521f63f390f50c3b9ee">TEST_CTX</a>-&gt;fullname() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span> \</div>
<div class="line">                &lt;&lt; <span class="stringliteral">&quot;\x1B[0;37m↳ &quot;</span> &lt;&lt; __FILE__ &lt;&lt; <span class="stringliteral">&quot;:&quot;</span> &lt;&lt; __LINE__             \</div>
<div class="line">                &lt;&lt; <span class="stringliteral">&quot; \x1B[0;32m PASSED:\x1B[0m\n&quot;</span>                            \</div>
<div class="line">                &lt;&lt; <span class="stringliteral">&quot;  \033[0;34mSUCCESS()\x1B[0m\n\n&quot;</span>;                       \</div>
<div class="line">        <a class="code hl_variable" href="namespacedrogon_1_1test_1_1internal.html#a61d93b38b33d498924ec06cfdc27971e">drogon::test::internal::numAssertions</a>++;                             \</div>
<div class="line">        <a class="code hl_variable" href="namespacedrogon_1_1test_1_1internal.html#a6c0af84d8691b60f689c9a4c7de1bf9f">drogon::test::internal::numCorrectAssertions</a>++;                      \</div>
<div class="line">    } <span class="keywordflow">while</span> (0)</div>
</div><!-- fragment -->
</div>
</div>
<a id="a95c9a8f6f2c4e521f63f390f50c3b9ee" name="a95c9a8f6f2c4e521f63f390f50c3b9ee"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a95c9a8f6f2c4e521f63f390f50c3b9ee">&#9670;&#160;</a></span>TEST_CTX</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define TEST_CTX&#160;&#160;&#160;drogon_test_ctx_</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a66af2211d459d1f12ec6a2e813ddc34d" name="a66af2211d459d1f12ec6a2e813ddc34d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a66af2211d459d1f12ec6a2e813ddc34d">&#9670;&#160;</a></span>TEST_FLAG_</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define TEST_FLAG_&#160;&#160;&#160;drgood__</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ad956e74d4720b19e005a3cadc2c48c71" name="ad956e74d4720b19e005a3cadc2c48c71"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad956e74d4720b19e005a3cadc2c48c71">&#9670;&#160;</a></span>TEST_INTERNAL__</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define TEST_INTERNAL__</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">func_name, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">expr, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">eval, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">on_exception, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">on_non_standard_exception, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">on_leaving&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>值:</b><div class="fragment"><div class="line">    <span class="keywordflow">do</span>                                                      \</div>
<div class="line">    {                                                       \</div>
<div class="line">        <span class="keywordtype">bool</span> <a class="code hl_define" href="drogon__test_8h.html#a66af2211d459d1f12ec6a2e813ddc34d">TEST_FLAG_</a> = <span class="keyword">false</span>;                            \</div>
<div class="line">        <span class="keyword">using </span><a class="code hl_function" href="namespacedrogon_1_1test_1_1internal.html#a02febbd44548abc6efe2fba930a79fd3">drogon::test::internal::stringifyFuncCall</a>;    \</div>
<div class="line">        <span class="keyword">using </span><a class="code hl_function" href="namespacedrogon_1_1test.html#abd86acf1acb0b30934b7e57e7a6b22ad">drogon::test::printErr</a>;                       \</div>
<div class="line">        <a class="code hl_variable" href="namespacedrogon_1_1test_1_1internal.html#a61d93b38b33d498924ec06cfdc27971e">drogon::test::internal::numAssertions</a>++;            \</div>
<div class="line">        <span class="keywordflow">try</span>                                                 \</div>
<div class="line">        {                                                   \</div>
<div class="line">            eval;                                           \</div>
<div class="line">        }                                                   \</div>
<div class="line">        catch (<span class="keyword">const</span> std::exception &amp;e)                     \</div>
<div class="line">        {                                                   \</div>
<div class="line">            (void)e;                                        \</div>
<div class="line">            on_exception;                                   \</div>
<div class="line">        }                                                   \</div>
<div class="line">        catch (...)                                         \</div>
<div class="line">        {                                                   \</div>
<div class="line">            on_non_standard_exception;                      \</div>
<div class="line">        }                                                   \</div>
<div class="line">        if (<a class="code hl_define" href="drogon__test_8h.html#a66af2211d459d1f12ec6a2e813ddc34d">TEST_FLAG_</a>)                                     \</div>
<div class="line">            <a class="code hl_variable" href="namespacedrogon_1_1test_1_1internal.html#a6c0af84d8691b60f689c9a4c7de1bf9f">drogon::test::internal::numCorrectAssertions</a>++; \</div>
<div class="line">        else                                                \</div>
<div class="line">            TEST_CTX-&gt;setFailed();                          \</div>
<div class="line">        on_leaving;                                         \</div>
<div class="line">    } <span class="keywordflow">while</span> (0);</div>
</div><!-- fragment -->
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
制作者&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8
</small></address>
</body>
</html>
